Board logo

标题: [文件操作] [已解决]如何让批处理在一个设定的时间周期内检测某个进程? [打印本页]

作者: 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

或者这样?
  1. :BOF
  2. @echo off
  3. call cscript my_sleep.vbs>nul
  4. echo done
  5. goto BOF
复制代码
my_sleep.vbs
  1. WScript.Sleep 1000
复制代码

作者: CrLf    时间: 2011-4-5 14:00

ping很吃cpu吗?为什么win7下测试,cpu占用为0
作者: Commander    时间: 2011-4-5 14:09

  1. @echo off
  2. :1
  3. echo ***.exe在运行
  4. tasklist | find /i "***.exe"
  5. if %errorlevel%==1 (
  6.     pint -n 10 127.1 >nul
  7.     goto :1
  8. ) else (
  9.     goto :2
  10. )
  11. :2
  12. echo ***.exe 已经结束
  13. 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