gpt4 book ai didi

windows-server-2008 - 在 Windows 任务计划程序中停止重复触发,直到第二天

转载 作者:行者123 更新时间:2023-12-02 04:42:39 31 4
gpt4 key购买 nike

我们已经安排了一个 Windows 任务来启动一些自定义代码(作为可执行文件),每 15 分钟检查一次文件是否存在。

如果最终找到文件,我们的服务会对其进行一些处理。难点在于:处理文件后,业务要求任务计划程序停止这些 15 分钟的检查,直到第二天。

有没有办法将逻辑插入 Windows 任务计划程序,以便在满足某些条件后停止运行其触发器?或者有没有更好的方法来构建这个过程?

我们使用 Windows Server 2008 R2 Standard SP1 来运行它。

最佳答案

如何结束计划任务:

A. 要从命令行终止当前正在运行的任务(即显示在任务计划程序 -> “显示所有正在运行的任务”中的任务):
schtasks.exe/End/TN "我的任务名称"

B. 要阻止计划任务在未来被触发运行:
schtasks.exe/Change/TN "我的任务名称"/DISABLE

C. 要重新启用任务:
schtasks.exe/Change/TN "我的任务名称"/ENABLE

键入以下内容可获得更多详细信息:schtasks.exe/Change/?

D. 要求终止在您运行 A. 以上:
taskkill.exe/IM Notepad.exe

E. 强制终止当您运行上面的 D. 时不会终止的进程:
taskkill.exe/F/IM Notepad.exe/T

注意:使用 taskkill 不是结束进程的干净方式。您可以阅读更多in this postin the article it links to .


如何针对您描述的情况在任务计划程序中进行设置:

与其让您的任务直接运行自定义 .exe,不如将其更改为运行脚本(例如批处理文件、PowerShell 脚本、Python 脚本等),然后:

  • 触发自定义exe,然后
  • 测试文件是否找到并“处理”,然后
  • 调用上面的命令 B. 以阻止它再次运行。

添加第二个每天早上运行的任务(选中“无论用户是否登录都运行”),通过调用上面的命令 C. 重新启用计划任务。

注意:调用 schtasks.exe 需要更高的权限,因此将执行该命令的任务设置为“以最高权限运行”。


如何检测文件是否已处理:

  • 让您的自定义 .exe 在成功运行时添加注册表项。您的脚本可以使用例如查找该条目reg.exe(输入 REG QUERY/? 获取详细信息)。

还有其他方法(例如发布 Windows 事件、发送消息等),但使用注册表是一种简单脚本使用的简单机制。

不要直接从您的 .exe 中禁用任务。将应用程序及其调用分开。如果您以后想以不同的方式禁用该任务,这也将使您不必重新编译。

关于windows-server-2008 - 在 Windows 任务计划程序中停止重复触发,直到第二天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482340/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com