bat脚本实现监控进程功能-自动重启

参考这篇博文https://www.cnblogs.com/sunfie/p/7071424.html
不过它里面有一些空格问题,和for循环集中运行命令失败问题,并不能用。

bat注意事项

  1. set 设置变量的时候,=前后都不要有空格
  2. qprocess.exe显示全部进程,进程名称是全小写,如果进程的名称过长,并不会完全显示,做find匹配的时候要注意。

代码如下:
start.bat

@echo off

cd /d %~dp0 

set _task=factorsserve
set _svr=FactorsServer.exe
set _des=restart.bat

cd x64.Release

:checkService
qprocess.exe|find "%_task%">..\process.txt

for /f "delims=" %%n in (..\process.txt) do (
goto checkMessage
)
goto restartService

:restartService
echo %time%
echo ********程序开始启动********
echo 程序重新启动于 %time% ,请检查系统日志 >> ..\restart_service.log
echo start %_svr% > %_des%
echo exit >> %_des%
start %_des%
REM set /p=.<nul 不换行在屏幕输出....
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 .
del %_des% /Q
echo ********程序启动完成********
goto checkService


:checkMessage
echo %time% 程序运行正常,5秒后继续检查..
ping localhost -n 5
goto checkService

说明:1. 要监控的进程是FactorsServer.exe
2. 对应的进程名称串查找factorsserve
3. restart.bat是重启进程的时候临时写的bat
4. 查找进程统一放在process.txt文件中,在for循环中查找。理论上只要一条信息。除非你事先打开了2个进程
5. cd /d %~dp0 去到start.bat的当前目录下。
6. 我的程序放在下一层文件夹x64.Release中。所以cd 进去x64.Release,然后写日志的时候…\出来到上一层。
7. 用ping做定时控制并不是十分准确的。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值