极品分享

批处理文件bat定时检查windows下的服务是否启动,未启动则自启动

需求:
windows上程序部署为服务方式运行,
但是有时服务会down掉,需要手动启动该服务,很麻烦;
可以通过批处理文件解决该问题;
定时检查服务是否存在,如果服务停止了,自动把该服务启动起来。

批处理文件写法:
可以用 windows更新服务 (Windows Update) 进行测试
.bat文件中代码如下:

@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

注意:
1、如果.bat文件中的汉字出现乱码可右键点击该bat文件,点击编辑,另存为ANSI格式即可正常显示。
2、上面的批处理文件是黑窗口方式运行,可以用于测试观察效果;
3、生产环境(正式使用)的话,可以转为后台运行方式启动批处理文件;
在开头@echo off 下,加以下三行代码即可转为后台运行方式:

if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin


2019-07-07 0 /
其他
/
标签: 

评论回复

回到顶部