最近需要在Windows服务器上保持程序长期允许,因为程序比较老,无法用srvany.exe 改写成windows服务,只能自己手动编写守护脚本实现,网上找了短比较靠谱的守护脚本,在此mark一下。支持监视进程、端口。
守护脚本定义部分
@echo off
::检测时间间隔,单位:秒
set _interval=5
::需要守护的进程名称
set _processName=ProcessName
::需要守护的进程启动命令
set _processCmd=C:\xxxx.exe
::需要守护的进程预估启动完毕所需时间,单位:秒
set _processTimeout=10
::需要守护的进程所监听的端口
set _port=8080
::进程用户名,一般是Administrator
set _username=Administrator
执行部分
@echo off
:LOOP
set /a isAlive=false
::通过进程名称检测
::tasklist /FI "username eq %_username%" | find /C "%_processName%" > temp.txt
::set /p num= temp.txt
set /p num= nul
)
if "%num%" NEQ "0" echo 已启动
::ping -n %_interval% 127.1>nul
choice /D y /t %_interval% >nul
goto LOOP
使用Script方式启动并隐藏CMD窗口
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "guard.bat",0