这是我的情况:
- 我有一个 BAT 文件需要很长时间才能运行(1 分钟到 70 分钟)
- 我用 Windows 调度程序安排它每 10 分钟运行一次
- 如果它仍在运行时再次调度,则不会发生任何事情(这很好)
我的问题是我需要我的 BAT 静默运行,但它不需要。因此,我想使用如下的 Windows 脚本启动它:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
Set WshShell = Nothing
不幸的是,当我安排这个脚本时,它完成了工作但立即返回,使 Windows 调度程序认为任务已经完成,而实际上 BAT 只是在某个地方自行运行。
因此,Windows 将在 10 分钟后再次重新安排作业并进行多次运行。
我需要的:
有没有办法告诉 Windows 脚本文件在继续/退出之前等待 .Run 命令的目标完成?基本上,我希望它的行为就像我启动了另一个线程,然后在其上调用了 join,所以它执行与 BAT 相同的操作,但不显示控制台窗口。
其他解决方案
告诉我任何其他方法可以让这个 BAT 静默执行(powershell 命令等),我也会接受它作为解决方案。只是不要告诉我围绕它写一个完整的 C++/C# 应用程序,那是矫枉过正 :)
运行: Windows Server 2008 R2