找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32325|回复: 9

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

[复制链接]
发表于 2012-8-29 13:20:05 | 显示全部楼层 |阅读模式
本帖最后由 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

复制代码
 楼主| 发表于 2012-8-29 15:54:07 | 显示全部楼层
以上代码,是检测的所有进程占用cpu总和的%比

我想实现的是:用bat批处理 检测某个进程占用cpu的%比
发表于 2012-8-29 16:35:55 | 显示全部楼层
 楼主| 发表于 2012-8-29 17:45:06 | 显示全部楼层
回复  ygqiang
forfiles 发表于 2012-8-29 16:35



    多谢了。。。。

可惜是vbs代码。。
 楼主| 发表于 2012-8-29 17:49:49 | 显示全部楼层
回复  ygqiang
forfiles 发表于 2012-8-29 16:35



    多谢。。。

测试代码。。。
发表于 2012-8-29 20:18:26 | 显示全部楼层
建议使用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 名
复制代码
发表于 2012-8-29 20:44:54 | 显示全部楼层
自古道:野花总比家花香,看来不是没有道理的。

批处理如何查看指定进程的CPU使用率?
http://www.bathome.net/thread-6303-1-1.html
发表于 2012-8-30 15:03:46 | 显示全部楼层
回复 6# cjiabing


楼主是要获取某个进程的CPU占用率,你那个帖子有这功能?
发表于 2012-8-30 15:06:31 | 显示全部楼层
回复 4# ygqiang


    没有什么好可惜的。BAT搞不定的就想其它办法呗,何必非在一棵树上吊死,多试几棵吧。
发表于 2012-8-30 18:47:21 | 显示全部楼层
回复 8# forfiles


    看错,只有内存占有率和CPU时间,而没有CPU占有率,看来是个问题!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 12:52 , Processed in 0.021536 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表