Windows下通过bat批处理文件简单实现软件进程检测
最近在工作中经常遇到软件被人关闭、无法自启动的问题,经过不断折腾,完成了一个简单的类似软件看门狗的批处理文件,有不对的请指教,菜鸟一个,希望大神路过顺带带飞。
一、要求:windows客户端在关闭时能自动重启,不需要人为去手动重新开启,并记录重启时间
二、实现思路:通过bat脚本文件监测客户端的进程,开启时先进行进程检测,如果存在,执行checkag;如果不存在客户端进程则执行startsvr重新启动;每隔5分钟检测一次客户端进程。
三、实现bat脚本文件:
测试客户端名称为msedge.exe,微软最新版浏览器,win10系统默认浏览器。
安装目录为 C:/Program Files (x86)/Microsoft/Edge/Application,可以直接在需要检测的文件上面右键打开文件位置,直接复制地址栏的路径即可。
运行时如果检查到有msedge.exe在运行,则认为程序已开启,如果检测不到进程就会自动重启,重启时会在bat文件的存放目录生成一个名为start.bat的文件,执行完成之后自动删除。
代码如下:
`@echo off
set _task=msedge.exe
set _svr=C:/Program Files (x86)/Microsoft/Edge/Application
set _des=start.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 cd %_svr% > %_des%
echo start %_task% >> %_des%
echo exit >> %_des%
start %_des%
set/p=.<nul
for /L %%i in (1 2 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% 程序运行正常,5分钟后继续检查..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%/delay.vbs
cscript //b //nologo %tmp%/delay.vbs 300000
goto checkstart`
在此衷心感谢二位大佬的分享,博客地址链接附后:
jack_孟:https://www.cnblogs.com/mq0036/p/12133516.html
shinianhuishou:https://blog.csdn.net/shinianhuishou/article/details/78366316