批处理文件以启动程序并在程序崩溃时重新启动它

时间:2015-11-21 18:04:22

标签: batch-file

我有一个脚本应该使用iMacros脚本启动Firefox,之后应检测Firefox崩溃的时间,如果崩溃,批量重新启动Firefox,依此类推。

但是我注意到Firefox重启了很多次,无论它是否崩溃

我想知道如何更改此代码,以便只在Firefox没有响应时重新启动。

代码:

@echo off
:loop
cls
taskkill /F /IM Firefox.exe
cls
taskkill /F /IM crashreporter.exe
ping 192.0.2.2 -n 1 -w 4000 > nul
set MOZ_NO_REMOTE=1
timeout /t 4 /nobreak
start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" imacros://run/?m=macros.iim
set MOZ_NO_REMOTE=
ping 192.0.2.2 -n 1 -w 1000000 > nul
goto loop

2 个答案:

答案 0 :(得分:1)

在这种情况下,您需要使用支票,例如在this回答时查看。所以在你的情况下,你需要使用

@echo off
start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" imacros://run/?m=macros.iim
:loop
tasklist /nh /fi "imagename eq firefox.exe" /fi "status eq running` |find  /i "firefox.exe"  >nul && ( 
timeout 60 /NOBREAK
) || ( 
cls
taskkill /F /IM Firefox.exe
cls
taskkill /F /IM crashreporter.exe
timeout 4 /NOBREAK
set MOZ_NO_REMOTE=1
start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" imacros://run/?m=macros.iim
set MOZ_NO_REMOTE=
)
goto loop

使用您的代码。这应该检查firefox是否没有响应,如果不是这样,它等待60秒。如果它没有响应,它会转到你的重启代码。

答案 1 :(得分:0)

START命令采用/ WAIT参数。这意味着只要firefox正在执行,它就不会将控制权返回给您的批处理脚本。假设firefox在崩溃时停止执行(看起来你正在假设),那么只需添加/ WAIT参数就可以实现你想要的效果。