0

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

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

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

4

2 回答 2

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,这意味着下一行终止程序。

然而,这并不是万无一失的,因为 ifprogram.exe是一个通用的程序名称,然后tasklisttaskkill终止具有相同程序名称的所有进程(不仅仅是您启动的实例)。

于 2013-03-25T15:48:17.203 回答
1

那个怎么样?

start calc.exe
ping -n 10 localhost >nul
taskkill /F /IM calc.exe
于 2013-03-25T15:47:06.070 回答