今天有个东西,想做个进程守护,保持持续连接,本来想用ProcessLasso,但是人家是收费的,并且是做进程管理的。
无奈,只能找找其他解决方案。
发现bat也可以实现进程守护,找了找,找到了一个:
windows下bat批处理实现守护进程(有日志) - jack_Meng - 博客园
windows下bat批处理实现守护进程(有日志) - jack_Meng - 博客园
写得非常全,但是我不需要日志的功能,所以将大神的bat批处理做了简化:
@echo off
title MyCustomKeeper
cls
::设置待执行软件完整路径(手动改成自己需守护的软件路径)
set runAppPath="D:\Program Files\Oray\SunLogin\SunloginClient\SunloginClient.exe"
::设置时间间隔,单位:秒
set _interval=10
::脚本自己赋值参数,不管
set runAppFolder=''
set _processName=''
set _processNameExt=''
if '%runAppPath%'=='' (goto end)
for %%a in (%runAppPath%) do (
set runAppFolder=%%~dpa
set _processName=%%~na
set _processNameExt=%%~nxa
)
::echo %runAppPath%
::echo %runAppFolder%
::echo %_processName%
::echo %_processNameExt%
goto checkstart
:checkstart
::检查进程是否还在
for /f "tokens=1" %%n in ('tasklist.exe ^| find /I "%_processNameExt%" ') do (
if '%%n'=='%_processNameExt%' (goto checkend)
)
:startApp
::重新启动进程
pushd %runAppFolder%
::显示启动信息
echo %date:~0,10% %time:~0,8%: %runAppPath%
::如果程序直接启动
start "" %runAppPath%
::如果程序需要参数,用下面的方法启动
start %runAppPath% -paramKey=paramValue
popd
:checkend
::循环检查
choice /t %_interval% /d y /n >nul
goto checkstart
:end
echo end.
我对窗口显示无所谓,如果不想显示窗口,可以参考以下文章:
怎么让bat运行不显示窗口-百度经验
https://jingyan.baidu.com/article/4ae03de3564d457efe9e6b2a.html