windows .bat批处理实现进程监控确保程序运行
来源:网络收集 点击: 时间:2024-02-24打开“记事本”,将以下代码写入,然后保存文件为:jk.bat
@echo off
rem 定义需监控程序的进程名和程序路径,可根据需要进行修改
set AppName=NetbootM.exe
set AppPath=E:dyc-v1.3\
title 进程监控
cls
echo.
echo 进程监控开始……
echo.
rem 定义循环体
:startjc
rem 从进程列表中查找指定进程
rem 下面语句也可写成 qprocess %AppName% nul (经验发布后补充)
qprocess|findstr /i %AppName% nul
rem 变量errorlevel的值等于0表示查找到进程,否则没有查找到进程
if %errorlevel%==0 (
echo ^%date:~0,10% %time:~0,8% 程序正在运行……
)else (
echo ^%date:~0,10% %time:~0,8% 没有发现程序进程
echo ^%date:~0,10% %time:~0,8% 正在重新启动程序
start %AppPath%%AppName% 2nul echo ^%date:~0,10% %time:~0,8% 启动程序成功
)
rem 用ping命令来实现延时运行
for /l %%i in (1,1,10) do ping -n 1 -w 1000 168.20.0.1nul
goto startjc
echo on

双击jk.bat文件运行脚本,运行效果如下:

qprocess|findstr /i %AppName% 即 qprocess|findstr /i NetbootM.exe
首先用qprocess命令显示当前系统所有可进程列表,也可用tasklist命令替代,再通过“|”管道符,将结果做为findstr命令的查找源文件,即用findstr命令从进程列表中查找 “NetbootM.exe”,符合条件则输出,用/i参数表示查找不区别大小字。


nul 表示将命令的标准输出结果重定向到空设备,即不显示在屏幕上。

%errorlevel%是系统变量,当前一个命令运行成功,它的值为0,否则它的值大于0。

%date:~0,10% %time:~0,8%:变量%date%、%time%分别表示当前日期和时间;
%var:~0,10%可用于对变量%var%进行字符截取。“~”表示:从左边开始;“0,10”表示:从0位以后,截取10个字符。

start notepad 2nul echo 启动程序成功
start命令用于启动程序,后面跟需运行的程序,如程序可执行文件在系统变量%path%所含目录中或跟脚本在同一目录可不跟文件路径,否则需输入完整路径。
2nul 表示将标准错误输出重定向到空设备,即标准错误输出不显示出来。
逻辑运算符“”表示只有在符号 前面的命令成功时,才用于运行该符号后面的命令。

for /l %%i in (1,1,10) do ping -n 1 -w 1000 168.20.0.1
for /l %i in (1,1,10) do 表示变量%i的初始值为1,当%i小于等于10时,运行do后面的命令语句,同时%i自增1,直到%i大于10结束循环。其中%i在脚本要写成%%i。
ping 命令 -n参数表示发送1个icmp包,-w 1000 表示等待回复的超时时间为1秒,后面跟一个不可能ping通的IP,来实现延时1秒的功能,但这个延时不够精确,且跟运行的电脑有关。



如果认为本经验对您有所帮助,请点击下面【投票】支持一下作者!
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_132293.html