我正在尝试从任务计划程序启动一项任务。该任务正在执行批处理文件。这是它第一次运行,但之后它的状态没有从正在运行变为就绪。它以 1 小时的间隔运行了 12 个小时。我尝试从头开始创建任务,但无法解决问题。我也无法使用热修复解决方案。请给我一些其他解决方法。
注意:解决方案也没有出现任何类型的异常,因为它会被记录在日志文件中。
请帮忙。提前致谢。
答案1
可能会发生按计划运行的任务无法终止的情况。目前尚不清楚这是任务管理器的错误还是脚本的错误,但两者都可能存在问题。例如,如果批处理文件包含暂停语句,则批处理文件需要按键才能继续。任务调度程序永远不会发送该语句,因此脚本永远不会完成。
话虽如此,我也见过任务正常完成的情况,但任务调度程序却无法识别这种情况。脚本正常终止,但任务管理器却声称它仍在运行。
因此,如果任务仍在运行,Microsoft 启用了在 x 小时后终止任务的选项。
因此,您要做的就是编辑任务,转到设置标签并找到Stop the task if it runs longer than 3 days
并将其更改为 1 小时。
在底部,你会发现:If the task is already running, the following applies: Do not start a new intstance
。
将其更改为Run a new instance in parallel
。
请注意,此选项可以终止前一个任务或队列。我故意选择不使用此方法。
现在,一旦您保存设置,右键单击任务并选择stop
停止正在运行的实例。
请记住,如果脚本确实在这里出错了,那么它可能无法正常运行,因此它应该执行的任何操作都永远不会完成。例如,如果您在没有任务计划程序的情况下运行脚本并且它工作正常,并且在网络共享上执行了一些操作,现在您配置为使用任务计划程序执行此操作,但您以更高的权限运行它,它可能只是无法访问网络共享并因此失败。但是,这应该可以正常终止脚本。
答案2
我也遇到了类似的问题,所以我得到的解决方案是多个用户连接到同一个用户或 NAS 驱动器,我已从服务器上注销所有用户,调度程序开始工作
答案3
您可以创建一个 .vba 文件来启动批处理文件。然后您需要使用 Scheduler 运行 .vba 文件。它将立即运行 .vba 文件;大约一秒钟即可运行到就绪状态。
这样,它就不会锁定该批处理文件的调度程序,脚本将独立运行;也就是说,批处理/脚本中的错误不会以任何方式影响调度程序。此外,此代码会使 cmd 窗口不可见,因此非常适合创建自动化脚本:
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c C:\full_path_to_your_bat_file.bat"
oShell.Run strArgs, 0, false