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

[系统相关] [已解决]bat批处理实现:检测所有进程cpu占有率的总和超过40%,就执行某个代码。

本帖最后由 ygqiang 于 2012-8-29 17:50 编辑

bat批处理实现:检测所有进程cpu占有率的总和超过40%,就执行某个代码。
  1. set Services1=mssqlserver
  2. for /f "tokens=2 delims==" %%a in ('wmic path Win32_PerfFormattedData_PerfOS_Processor get PercentProcessorTime /value
  3. ^| findstr "PercentProcessorTime"') do (
  4.   set CPUUsage=%%a  
  5. )
  6. if %CPUUsage% geq 40 (
  7.     net stop %Services1%
  8.     ping 127.0.0.1 -n 1 >nul 2>nul
  9.     net start %Services1%
  10.    
  11. )
  12. exit
复制代码
上面这个代码,测试是没有问题。



如果再加上下面这个判断时间范围的代码,测试也能通过。(在规定时间范围内,cpu总的占用超过40%,就执行停止、开启sql数据库操作)。
  1. :begin1
  2. ping 127.0.0.1 -n 600 >nul 2>nul
  3. :begin2
  4. if %time:~0,2% geq 11 (if %time:~3,2% leq 15 goto :stat)
  5. if %time:~0,2% geq 17 (if %time:~3,2% leq 20 goto :stat)
  6. goto :begin1
  7. :stat
  8. set Services1=mssqlserver
  9. for /f "tokens=2 delims==" %%a in ('wmic path Win32_PerfFormattedData_PerfOS_Processor get PercentProcessorTime /value
  10. ^| findstr "PercentProcessorTime"') do (
  11.   set CPUUsage=%%a  
  12. )
  13. if %CPUUsage% geq 40 (
  14.     net stop %Services1%
  15.     ping 127.0.0.1 -n 1 >nul 2>nul
  16.     net start %Services1%
  17.    
  18. )
  19. ping 127.0.0.1 -n 10 >nul 2>nul
  20. goto :begin2
复制代码

以上代码,是检测的所有进程占用cpu总和的%比

我想实现的是:用bat批处理 检测某个进程占用cpu的%比

TOP

TOP

回复  ygqiang
forfiles 发表于 2012-8-29 16:35



    多谢了。。。。

可惜是vbs代码。。

TOP

回复  ygqiang
forfiles 发表于 2012-8-29 16:35



    多谢。。。

测试代码。。。

TOP

建议使用tasklist、taskkill命令的筛选器!~
http://bbs.bathome.net/thread-11052-1-1.html
  1. 筛选器:
  2.     筛选器名        有效操作符                有效值
  3.     -----------     ---------------           --------------
  4.     STATUS          eq, ne                    正在运行 | 没有响应
  5.     IMAGENAME       eq, ne                    图像名
  6.     PID             eq, ne, gt, lt, ge, le    PID 值
  7.     SESSION         eq, ne, gt, lt, ge, le    会话编号
  8.     SESSIONNAME     eq, ne                    会话名
  9.     CPUTIME         eq, ne, gt, lt, ge, le    CPU 时间,格式为
  10.                                               hh:mm:ss。
  11.                                               hh - 时,
  12.                                               mm - 分,ss - 秒
  13.     MEMUSAGE        eq, ne, gt, lt, ge, le    内存使用量(KB)
  14.     USERNAME        eq, ne                    用户名,格式为 [domain\]user
  15.     SERVICES        eq, ne                    服务名
  16.     WINDOWTITLE     eq, ne                    窗口标题
  17.     MODULES         eq, ne                    DLL 名
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

自古道:野花总比家花香,看来不是没有道理的。

批处理如何查看指定进程的CPU使用率?
http://www.bathome.net/thread-6303-1-1.html
我不知道

TOP

回复 6# cjiabing


楼主是要获取某个进程的CPU占用率,你那个帖子有这功能?

TOP

回复 4# ygqiang


    没有什么好可惜的。BAT搞不定的就想其它办法呗,何必非在一棵树上吊死,多试几棵吧。

TOP

回复 8# forfiles


    看错,只有内存占有率和CPU时间,而没有CPU占有率,看来是个问题!~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表