以notepad程序为例,守护进程每间隔50ms轮询检查该进程是否启动。如果启动进入休眠50ms;如果未启动,进入启动程序;
daemon.bat
@echo off
set _task=notepad.exe
set _svr=c:\windows\notepad.exe
set _des=start.bat
set _interval=50
:checkstart
for /f "tokens=5" %%n in ('qprocess.exe ^| find "%_task%" ') do (
if %%n==%_task% (goto checkag) else goto startsvr
)
:startsvr
echo %time%
echo ********program start begin********
echo program reboost at %time% ,please check log. >> restart_service.txt
start %_svr%
::echo exit >> %_des%
::start %_des%
::set/p=.<nul
::for /L %%i in (1 1 10) do set /p a=.<nul&ping.exe /n 2 127.0.0.1>nul
::echo .
::echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
::cscript //b //nologo %tmp%\delay.vbs 10000
::del %_des% /Q
echo ********program start finished ********
goto checkstart
:checkag
echo %time% program %_task% run normally, next check will be lauched in %_interval% milliseconds ...
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs %_interval%
goto checkstart