我正在批处理文件中执行程序。如果批处理脚本运行超过一段时间(比如10秒),我想要打破。因为它可能会成为一个无限循环。
cls
::set timeout here
program.exe
::after timeout continue from here
是否有任何建议在Windows批处理文件中执行此操作?另外,是否可以在批处理脚本中定义无限循环线?
答案 0 :(得分:3)
当您从批处理文件运行程序时,您要么运行它并等待它在批处理文件中执行下一个命令之前终止,要么启动程序并立即继续执行批处理文件。没有办法测量程序运行的时间。但是,您可以使用某些技术来查看程序是否正在运行并终止它。您还可以插入延迟。所以你可以做你想要的(或多或少):
cls
start program.exe
ping -n 10 -w 1000 127.0.0.1 > nul 2>&1
tasklist | find /i "program.exe"
if %errorlevel%==0 taskkill /im program.exe
这将启动程序并立即开始执行下一行代码ping
。 ping
导致10秒延迟。 tasklist
命令将列表传递给find
,查找该程序。如果在列表中找到它,则它仍在运行,并且errorlevel
设置为0
,这意味着下一行将终止该程序。
但这不是万无一失的,因为如果program.exe
是一个常见的程序名,那么tasklist
和taskkill
将终止具有相同程序名称的所有进程(不仅仅是实例)你开始了。)
答案 1 :(得分:1)
那怎么样?
start calc.exe
ping -n 10 localhost >nul
taskkill /F /IM calc.exe