BAT监视进程
发布网友
发布时间:2022-05-27 03:46
我来回答
共1个回答
热心网友
时间:2023-10-05 12:02
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem
:xx
Tasklist | find /i "qq.exe"
if %errorlevel% equ 0 (
echo %date% %time%“QQ已经启动了” >> c:\qq.txt
goto ww
)else (
ping 127.0.0.1 -n 30
goto xx
)
:ww
ping 127.0.0.1 -n 30
Tasklist | find /i "qq.exe"
if %errorlevel% equ 0 (
goto ww
)else (
echo %date% %time%“QQ已经结束了” >> c:\qq.txt
goto xx
)
第一部分的用途是隐藏CMD执行窗口
第二部分的用途检测QQ这个进程是否处于运行状态,是的话,就跳到第三步,否的话,就循环检测登录过程;
第三部分的用途是检测QQ进程是否被结束,是的话,就跳到第二步,监听新进程何时启动;否的话就继续检测QQ进程何时被关闭;
其中ping的意思是为了做个时延;
原理:
检测QQ这个进程是否存在,存在就跳到另一步骤去检测何时结束;结束了又跳回来检测何时启动;
具体你想检查什么进程,还有就是输出重定向的位置自己改一下就是的了;
友情提醒一下,刚才做测试的时候,发现因为第一步骤调用系统自带的VB脚本的时候,会被360弹窗警告;运行的时候,不要惯性点阻止的哈;
原理就是这个样子,你自己再结合情况修改一下就好啦;
================================================
17:09 2012/12/22
修改了一下;我对if的也不很清楚该怎么用哦;测试了好久,下面跟的这个方法测试后是可以的达到效果的;
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
set a=1
set b=1
:xx
if %a% == 1 ( tasklist | find /i "qq.exe" && set /a a=%a%+1 && echo %date% %time%“QQ已经启动了” >> c:\qq.txt )
if %a% == 2 ( tasklist | find /i "qq.exe" || set /a a=%a%+1 )
if %a% == 3 ( set /a a=%a%-2 && echo %date% %time%“QQ已经结束了” >> c:\qq.txt )
if %b% == 1 ( tasklist | find /i "QQGAME.EXE" && set /a b=%b%+1 && echo %date% %time%“QQGAME已经启动了” >> c:\qq.txt )
if %b% == 2 ( tasklist | find /i "QQGAME.EXE" || set /a b=%b%+1 )
if %b% == 3 ( set /a b=%b%-2 && echo %date% %time%“QQGAME已经结束了” >> c:\qq.txt )
ping 127.1 -n 10
goto xx
================================================
如果还有其它的程序要监控,也可以再加变量;
然后复制中间三句命令修改一下进程名称和变量号就可以的了哦;
原理在于,给每个进程设置一个变量,赋初值为1,启动后加1;结束时减1;
但由于我也不是很了解if嵌套的用法,于是只好这样设置了;
启动加1并写启动信息,结束再加1,写退出信息再减2;
================================================