Dos:bat守护进程

来自WHY42
imported>Soleverlee2016年9月23日 (五) 02:57的版本 (以“利用bat实现守护程序,真蛋疼的语法... <source lang="bash"> @echo off ::检测时间间隔,单位:秒 set _interval=3 ::需要守护的...”为内容创建页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

利用bat实现守护程序,真蛋疼的语法...

@echo off  
  
::检测时间间隔,单位:秒  
set _interval=3  
  
::需要守护的进程名称  
set _processName=notepad.exe
  
::需要守护的进程启动命令  
set _processCmd=c:\windows\notepad.exe
  
::需要守护的进程预估启动完毕所需时间,单位:秒  
set _processTimeout=2  
  
::需要守护的进程所监听的端口  
set _port=8080  
  
::进程用户名,一般是Administrator  
set _username=riguz   
  
:LOOP  
set /a isAlive=false  
  
::通过进程名称检测  
tasklist /FI "username eq %_username%" | find /C "%_processName%" > temp.txt  

::通过进程的端口是否正在被监听检测  
::netstat -an | find /C "0.0.0.0:%_port%" > temp.txt  
set /p num= < temp.txt  
del /F temp.txt  
  
if "%num%" == "0" (  
	start %_processCmd% | echo start %_processName% "@" %time%  
	choice /D y /t %_processTimeout% > nul  
)  
  
if "%num%" NEQ "0" echo .
  
::ping -n %_interval% 127.1>nul  
choice /D y /t %_interval% >nul  
  
goto LOOP