如何通过在批处理文件中设置超时来打破无限条件?

时间:2013-03-25 14:34:14

标签: batch-file

我正在批处理文件中执行程序。如果批处理脚本运行超过一段时间(比如10秒),我想要打破。因为它可能会成为一个无限循环。

cls
::set timeout here
program.exe
::after timeout continue from here

是否有任何建议在Windows批处理文件中执行此操作?另外,是否可以在批处理脚本中定义无限循环线?

2 个答案:

答案 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

这将启动程序并立即开始执行下一行代码pingping导致10秒延迟。 tasklist命令将列表传递给find,查找该程序。如果在列表中找到它,则它仍在运行,并且errorlevel设置为0,这意味着下一行将终止该程序。

但这不是万无一失的,因为如果program.exe是一个常见的程序名,那么tasklisttaskkill将终止具有相同程序名称的所有进程(不仅仅是实例)你开始了。)

答案 1 :(得分:1)

那怎么样?

start calc.exe
ping -n 10 localhost >nul
taskkill /F /IM calc.exe