[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

我用一个批处理检查系统进程里面是否有一个*.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系统)
1

评分人数

    • tmplinshi: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 TX_kakashi 于 2011-4-5 13:44 编辑

win7可以用timeout,xpsp3的话没有太好的延迟命令,ping也相当吃cpu.如果默认安装了choice也可以试试。
天道酬勤

TOP

或者这样?
  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
复制代码
天道酬勤

TOP

ping很吃cpu吗?为什么win7下测试,cpu占用为0

TOP

  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
复制代码
1

评分人数

TOP

4# zm900612
之前一直这么流传着这么个说法,刚测试了一下(xp+sp2)占用的确不大,3%-5%左右..
天道酬勤

TOP

5# Commander


非常感谢 5楼,已测试,能达到我要的效果。3Q

TOP

返回列表