我正在批处理文件中执行程序。如果批处理脚本运行超过一段时间(比如 10 秒),我想中断。因为它可能会变成一个无限循环。
cls
::set timeout here
program.exe
::after timeout continue from here
有什么建议可以在 Windows 批处理文件中执行此操作吗?另外,是否可以在批处理脚本中定义无限循环行?
我正在批处理文件中执行程序。如果批处理脚本运行超过一段时间(比如 10 秒),我想中断。因为它可能会变成一个无限循环。
cls
::set timeout here
program.exe
::after timeout continue from here
有什么建议可以在 Windows 批处理文件中执行此操作吗?另外,是否可以在批处理脚本中定义无限循环行?
从批处理文件运行程序时,您要么运行它并等待它终止,然后再执行批处理文件中的下一个命令,要么启动程序并立即在批处理文件中继续执行。没有办法衡量一个程序运行了多长时间。但是,您可以使用某些技术来查看程序是否正在运行并终止它。您还可以插入延迟。所以你可以做你所要求的(或多或少):
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
,这意味着下一行终止程序。
然而,这并不是万无一失的,因为 ifprogram.exe
是一个通用的程序名称,然后tasklist
将taskkill
终止具有相同程序名称的所有进程(不仅仅是您启动的实例)。
那个怎么样?
start calc.exe
ping -n 10 localhost >nul
taskkill /F /IM calc.exe