我有一个X.exe
大约需要 2-6 小时才能完成的程序。确切的时间未知,但我希望将阈值设置为 6.5 或 7 小时。如果这个程序在这段时间内没有返回任何值,它将被杀死。我如何使用批处理来实现这个*.bat
files?
这是我到目前为止所拥有的:一个计时器bat1.bat
和一个实际的bat2.bat
.
蝙蝠1.bat:
start cmd /C bat2.bat & timeout /t 25200 & taskkill /im X.exe /f
蝙蝠2.bat:
cd blah
bat1.bat
这种方法的问题在于,只有在 25200 秒(或 7 小时)之后计时器才会停止,并且不会在该限制之前终止。我如何告诉计算机如果程序X.exe
完成了然后不再等待吗?
任何帮助表示赞赏!
我认为这是一个更简单的解决方案:
rem Start the process that will kill the X.exe program after 7 hours
start "WaitingToKill" cmd /C timeout /t 25200 ^& taskkill /im X.exe /f
rem Run the X.exe program and wait for it to terminate
X.exe
rem Kill the killer process and terminate
taskkill /fi "WINDOWTITLE eq WaitingToKill" /f
在这个方法中,没有任何额外的代码同时运行;只是等待状态timeout
命令。
EDIT: 添加了一些解释
请注意,“WaitingToKill”cmd.exe 进程与timeout
命令和X.exe
程序并行运行。如果timeout
命令在 7 小时后结束,taskkill /im X.exe /f
命令执行后,X.exe
程序被终止,两个 cmd.exe 进程都结束。
If the X.exe
程序在7小时前结束,批处理文件执行下一行as usual。这条线是taskkill /fi "WINDOWTITLE eq WaitingToKill" /f
,所以窗口timeout
命令被终止,两个 cmd.exe 进程都结束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)