标题: [文件操作] [已解决]如何让批处理在一个设定的时间周期内检测某个进程? [打印本页]
作者: jia117ily 时间: 2011-4-5 13:38 标题: [已解决]如何让批处理在一个设定的时间周期内检测某个进程?
我用一个批处理检查系统进程里面是否有一个*.exe在运行
:1
echo ***.exe在运行
tasklist |find /i "***.exe"
if %errorlevel%==1 (goto 1) else (goto 2)
:2
echo ***.exe 已经结束
start ***.exe
可以实现我想要的效果,但是他会不停的检测,并且检测的频率太高(基本上每秒要检测十几次,就像是在刷屏一样),从而导致CPU占用变得很高。机器一会就开始卡了。
可不可以加入某些命令,让他变成周期检测?比如每隔5秒,或10秒,检测一次。(我的意思是这个批处理必须让它一直运行,每隔5秒或10秒检测一次某个进程,而不是每隔5秒打开一次批处理),谢谢 (我是XP系统)
作者: TX_kakashi 时间: 2011-4-5 13:43
本帖最后由 TX_kakashi 于 2011-4-5 13:44 编辑
win7可以用timeout,xpsp3的话没有太好的延迟命令,ping也相当吃cpu.如果默认安装了choice也可以试试。
作者: TX_kakashi 时间: 2011-4-5 13:50
或者这样?- :BOF
- @echo off
- call cscript my_sleep.vbs>nul
- echo done
- goto BOF
复制代码
my_sleep.vbs复制代码
作者: CrLf 时间: 2011-4-5 14:00
ping很吃cpu吗?为什么win7下测试,cpu占用为0
作者: Commander 时间: 2011-4-5 14:09
- @echo off
- :1
- echo ***.exe在运行
- tasklist | find /i "***.exe"
- if %errorlevel%==1 (
- pint -n 10 127.1 >nul
- goto :1
- ) else (
- goto :2
- )
- :2
- echo ***.exe 已经结束
- start ***.exe
复制代码
作者: TX_kakashi 时间: 2011-4-5 14:19
4# zm900612
之前一直这么流传着这么个说法,刚测试了一下(xp+sp2)占用的确不大,3%-5%左右..
作者: jia117ily 时间: 2011-4-5 15:36
5# Commander
非常感谢 5楼,已测试,能达到我要的效果。3Q
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |