Batch file 如果批处理命令未在给定时间段内终止,则停止该命令

Batch file 如果批处理命令未在给定时间段内终止,则停止该命令,batch-file,Batch File,我有一个简单的批处理文件,它一个接一个地运行一堆PHP文件。有时,一些php文件挂起,当这种情况发生时,整个批处理文件停止执行在此之后提交的文件 有没有办法停止运行该命令,并在给定时间段后在批处理脚本中继续执行下一个命令 到目前为止,我的批处理文件仅包含大约800行,命令与下面的命令类似: php72 ../simulation.php --version 0.9.0.4 --hashsimmilar false --thinkahead 0 --detailed 0 --outfile cat

我有一个简单的批处理文件,它一个接一个地运行一堆PHP文件。有时,一些php文件挂起,当这种情况发生时,整个批处理文件停止执行在此之后提交的文件

有没有办法停止运行该命令,并在给定时间段后在批处理脚本中继续执行下一个命令

到目前为止,我的批处理文件仅包含大约800行,命令与下面的命令类似:

php72 ../simulation.php --version 0.9.0.4 --hashsimmilar false --thinkahead 0 --detailed 0 --outfile catacombs.outfile.csv --workingdir "C:/xampp/htdocs/rpg_prog/" --customfight 1,2,,,,1,,,1,,0,0,0,Catacombs1
php72 ../simulation.php --version 0.9.0.4 --hashsimmilar false --thinkahead 1 --detailed 0 --outfile catacombs.outfile.csv --workingdir "C:/xampp/htdocs/rpg_prog/" --customfight 1,2,,,,1,,,1,,0,0,0,Catacombs1
php72 ../simulation.php --version 0.9.0.4 --hashsimmilar false --thinkahead 2 --detailed 0 --outfile catacombs.outfile.csv --workingdir "C:/xampp/htdocs/rpg_prog/" --customfight 1,2,,,,1,,,1,,0,0,0,Catacombs1

例如,如果上面列表中的第二行挂起,整个批处理文件将挂起,第三行将永远不会执行。

如果没有任何其他php72.exe进程,您可以在每个php72调用前加上start/B前缀,并在每个php72调用后加上以下行。如果您不想强制终止任务,请删除/F选项:

超时/T 10/NOBREAK>nul taskkill/IM php72.exe/F>num2>&1 >后缀只是避免抛出任何错误消息

为了不必多次复制上述行,您还可以将以下代码放在批处理文件的顶部:

@回音 rem//读取此批处理文件中以“php72”开头的所有行,并对其进行迭代: 对于/F delims=%%C in' findstr/BIC:php72%~f0 ”“是吗 rem//执行当前迭代的'php72'命令行: 开始/B%%C rem//等待一段时间: 超时/T 10/NOBREAK>nul rem//杀死'php72'进程,或者如果仍在运行,则实际上杀死所有进程: taskkill/IM php72.exe/F>num2>&1 rem//避免下次落入“php72”命令行: 退出/B rem//这是你的台词: php72../simulation.php-version 0.9.0.4-hashsimilar false-thinkahead 0-detailed 0-outfile catacoms.outfile.csv-workingdir C:/xampp/htdocs/rpg_prog/-customfight 1,2,1,1,1,0,0,0,catacoms1 php72../simulation.php-version 0.9.0.4-hashsimilar false-thinkahead 1-detailed 0-outfile catacoms.outfile.csv-workingdir C:/xampp/htdocs/rpg_prog/-customfight 1,2,1,1,1,0,0,0,catacoms1 php72../simulation.php-version 0.9.0.4-hashsimilar false-thinkahead 2-detailed 0-outfile catacoms.outfile.csv-workingdir C:/xampp/htdocs/rpg_prog/-customfight 1,2,1,1,1,0,0,0,catacoms1 当然,您可以将php72命令行放在单独的文件中,然后需要相应地调整for/F循环:

rem//指定适当的文本文件: 对于/F usebackq delims=%%C,位于D:\path\to\file.txt do中 rem//与上面相同的循环体。。。
我的问题是,只有当php72行正确执行并终止时,才会调用超时函数。因此,在我的例子中,代码永远不会达到这一点。:与此同时,我无意中发现了启动自己:谢谢你的帮助!