我有一个简单的批处理文件,该文件运行一堆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
例如,如果以上列表中的第二行挂起,则整个批处理文件将挂起,而第三行将永远不会执行。
答案 0 :(得分:1)
鉴于没有其他php72.exe
进程,您可以在每个php72
调用之前加start "" /B
前缀,并在每个php72
调用之后加上以下几行(删除{{ 1}}选项(如果您不想强行终止任务):
/F
后缀timeout /T 10 /NOBREAK > nul
taskkill /IM "php72.exe" /F > nul 2>&1
只是避免抛出任何(错误)消息。
不必多次复制上述行,也可以将以下代码放在批处理文件的顶部:
>
当然,您可以在单独的文件中包含@echo off
rem // Read all lines from this batch file that begin with `php72 ` and iterate over them:
for /F "delims=" %%C in ('
findstr /BIC:"php72 " "%~f0"
') do (
rem // Execute the currently iterated `php72` command line:
start "" /B %%C
rem // Wait for some time:
timeout /T 10 /NOBREAK > nul
rem // Kill the `php72` process (or actually all of them) if still running:
taskkill /IM "php72.exe" /F > nul 2>&1
)
rem // Avoid to fall into the `php72` command lines another time:
exit /B
rem // These are your lines:
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
循环:
for /F