Windows下通过bat批处理文件和vbs脚本实现守护进程-ITB运维部落—http://www.itbcn.cn—ITB运维技术交流之家平台
记录工作点滴
分享运维知识

Windows下通过bat批处理文件和vbs脚本实现守护进程

问题描述:

客户要求windows客户端在宕机时能自动重启,不需要人为去手动重新开启。

想法:

1、通过客户端代码增加守护进程的方法实现,但是之前windows下没有过相关经验;

2、通过脚本的方法实现;

实现:

1、start.bat

测试客户端名称为ISMClient.exe,安装目录为 C:\ISMClient\ISMClient.exe(最好不要有中文)。

运行时如果检查到有ISMClient.exe在运行,则算成自己的进程名,如果进程宕了就过会自动重启(会在当前目录下生成一个start1.bat)
注意:红色部分可根据自己的需求修改。
见代码(start.bat)

@echo off

set _task=ISMClient.exe
set _svr=C:\ISMClient\ISMClient.exe
set _des=start1.bat
:checkstart
SET status=1
(TASKLIST|FIND /I “%_task%”||SET status=0) 2>nul 1>nul
ECHO %status%
IF %status% EQU 1 (goto checkag ) ELSE (goto startsvr)

:startsvr
echo %time%
echo ********程序开始启动********
echo 程序重新启动于 %time% ,请检查系统日志 >> restart_service.txt
echo start %_svr% > %_des%
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 ********程序启动完成********
goto checkstart

:checkag
echo %time% 程序运行正常,10秒后继续检查..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
goto checkstart
运行start.bat批处理文件,已经可以实现功能了。但是其cmd运行窗口一直显示,看起来肯定不舒服。所以需要想办法将其隐藏,这里采用vbs脚本(见第2点)。

2、start.vbs

start.vbs比较简单,直接见代码吧。

Set ws = CreateObject(“Wscript.Shell”)

ws.run “cmd /c D:\start.bat”,vbhide

注意: D:\start.bat 为第1点中批处理文件的存放地址(最好不要有中文)

运行start.vbs,题述功能可以实现了。

顺便提一句,由于cmd窗口被隐藏了,新手可能不知道从哪里去关闭上面的操作,现提供一个比较粗犷的方法吧。

(1)打开任务管理器,结束wscript.exe进程;

(2)打开任务管理器,结束cmd.exe进程;

未经允许不得转载:ITB运维部落—http://www.itbcn.cn—ITB运维技术交流之家平台 » Windows下通过bat批处理文件和vbs脚本实现守护进程

如果文章对你有帮助,欢迎点击上方按钮打赏作者

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址