bat批处理脚本检查windows应用程序是否启动

需求说明

在windows系统中,有时需要启动一些应用程序,但是因为一些原因导致没有启动起来,而我们又需要其正常启动。
例如:向日葵远程控制,在出门时启动后,因为一些原因导致没有正常启动。

脚本说明

1.创建txt文本文件,修改文件名称及扩展名为.bat,注意:文件名称不能中文
2.需要注意脚本保存的文件夹中也不能有中文,有中文可能会引起执行错误
3.启动脚本需要以管理员身份运行(原因:避免弹出用户控制页面需要确认是否可以启动应用程序)
4.编辑脚本根据实际需求修改应用程序名、路径、重试时间(下面脚本示例中 TODO 标识处)
5.脚本中应用程序.exe名称的获取方式:在桌面快捷方式右键->打开文件所在位置
6.应用程序的路径就是.exe文件所在路径(应用程序安装路径)
7.脚本会检查3次应用程序是否启动成功,如果均启动成功,脚本自动退出,若重试10次,应用程序仍然没有启动成功则退出脚本执行。

小提示:
创建快捷方式并设置以管理员身份运行

右键点击批处理文件 startXRK.bat,选择“创建快捷方式”。
右键点击创建的快捷方式,选择“属性”。
在“快捷方式”选项卡中,点击“高级”按钮。
勾选“以管理员身份运行”。
点击“确定”并应用设置。
这样,每次通过快捷方式启动脚本时,都会以管理员身份运行,并执行脚本中的操作。

bat脚本示例

@echo off
chcp 65001 > nul
REM 应用程序进程名称 (TODO:需要替换实际应用程序名)
set processName=SunloginClient.exe
REM 应用程序启动程序路径 (TODO:需要替换实际路径)
set applicationPath=F:\SunloginClient_10.2.1\SunloginClient\SunloginClient.exe
REM 延迟检查时间,单位:秒 (TODO:根据实际需要设置等待重试时间)
set checkInterval=300
REM 日志文件
set logFile=%cd%\xrkRun_log.txt
REM 启动成功累加器
set /a count=1
REM 启动失败累加器
set /a countFail=1
echo [%date% %time%] 检查%processName%应用程序启动情况开始 >> %logFile%
:loop
timeout /t %checkInterval% /nobreak > NUL
tasklist /fi "imagename eq %processName%" 2>NUL | find /i /n "%processName%">NUL
if "%ERRORLEVEL%"=="0" (
echo [%date% %time%] 应用程序正在运行 >> %logFile%
set /a count+=1
if %count%==3 (
echo [%date% %time%] 应用程序已启动成功,退出脚本 >> %logFile%
exit
)
) else (
echo [%date% %time%] 应用程序没有运行 >> %logFile%
powershell -Command "Start-Process -FilePath '%applicationPath%' -Verb RunAs"
echo [%date% %time%] 应用程序自动拉起 >> %logFile%
set /a countFail+=1
if %countFail%==10 (
echo [%date% %time%] 警告:应用程序启动失败,退出脚本 >> %logFile%
exit
)
)
goto loop

执行日志

脚本执行过程日志打印文件与脚本同一目录下,文件名:xrkRun_log.txt

[周一 2024/06/24 22:13:42.63] 检查SunloginClient.exe应用程序启动情况开始
[周一 2024/06/24 22:13:52.24] 应用程序正在运行
[周一 2024/06/24 22:14:02.28] 应用程序正在运行
[周一 2024/06/24 22:14:12.21] 应用程序正在运行
[周一 2024/06/24 22:14:12.21] 应用程序已启动成功,退出脚本
posted @   Lz_蚂蚱  阅读(527)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起