需求:
windows上程序部署为服务方式运行,
但是有时服务会down掉,还需要人为的启动该服务,很麻烦;
可以通过,批处理文件,来解决该问题;
定时检查服务 是否存在, 如果服务停止了, 自动把该服务启动起来
批处理文件写法 :
可以拿 windows更新服务 (Windows Update) 来测试;
@echo off
rem 定义循环间隔时间和监测的服务:
set secs=90
set srvname="Windows Update"
echo.
echo ========================================
echo == 查询计算机服务的状态, ==
echo == 每间隔%secs%秒种进行一次查询, ==
echo == 如发现其停止,则立即启动。 ==
echo ========================================
echo.
echo 此脚本监测的服务是:%srvname%
echo.
if %srvname%. == . goto end
:chkit
set svrst=0
for /F "tokens=1* delims= " %%a in ('net start') do if /I "%%a %%b" == %srvname% set svrst=1
if %svrst% == 0 net start %srvname%
set svrst=
rem 下面的命令用于延时,否则可能会导致cpu单个核心满载。
ping -n %secs% 127.0.0.1 > nul
goto chkit
:end
注:
上边的批处理文件是, 黑窗口方式运行,可以测试观察效果用 ;
生产环境, 正式使用的话 , 可以转为后台运行方式, 启动批处理文件 ;
在开头@echo off 的下边, 再加三行代码即可
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin