Board logo

标题: [系统相关] 如何获取批处理从执行到结束花费的时间和执行时CPU的实时占用率? [打印本页]

作者: YYchen    时间: 2016-3-28 18:06     标题: 如何获取批处理从执行到结束花费的时间和执行时CPU的实时占用率?

本帖最后由 pcl_test 于 2016-3-28 22:49 编辑

1.bat文件从开始执行到执行结束花费多长的时间
2.bat文件执行时的环境的系统参数:CPU的占用率等等
3.把这些参数信息输出到log中。

各位大神哥哥 帮帮忙看一下 谢谢啦
作者: happy886rr    时间: 2016-3-28 20:26

本帖最后由 happy886rr 于 2016-3-28 20:29 编辑

回复 1# YYchen
在星线内插入你的批处理代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1 delims=:" %%a in ('type "%~f0"^|findstr /n /c:"REM CPUPVBS"') do (set line=%%a)
  4. if not exist cpup.vbs (more +!line! "%~f0">cpup.vbs)
  5. start /min cpup.vbs
  6. REM 插入计时帧
  7. set t1=!time!
  8. ::*************************************************************
  9. REM 在星线内插入批处理代码
  10. REM 以下为演示代码,计算圆周率300位,引用CrLf优化算法
  11. set /a a=10000,c=300
  12. (set /a "a/=5,c=c/4*14-1"
  13. for /l %%a in (1 1 !c!) do set f[%%a]=!a!
  14. for /l %%i in (!c! -14 0) do (
  15. for /l %%j in (%%i -1 1) do (
  16. set /a d+=f[%%j]*%a%,f[%%j]=d%%(%%j*2+1^),d=d/(%%j*2+1^)*%%j
  17. )
  18. set /a c=a+d/%a%,a=d%%%a%+%a%,d=0
  19. set /p=!c:~-4!
  20. )
  21. )<nul
  22. ::*************************************************************
  23. REM 插入结束帧
  24. set t2=!time!
  25. set/a "t=(!t2:~0,2!-!t1:~0,2!)*3600+(1!t2:~3,2!-1!t1:~3,2!)*60+1!t2:~6,2!-1!t1:~6,2! ,t+=-86400*(t>>31),min=t/60"
  26. echo, &type log.txt &echo, &set /p =耗时!t!秒,约合!min!分钟 &exit
  27. REM CPUPVBS
  28. dim iCpuUsePercentage
  29. dim iSecond
  30. dim objFileStream
  31. dim objTextFileWriter
  32. dim objShell'Shell
  33. dim objFileInfo
  34. dim bIsExecuteBat
  35. iSecond=0
  36. bIsExecuteBat=False
  37. set objFileStream =CreateObject("Scripting.Filesystemobject")
  38. set objTextFileWriter=objFileStream.opentextfile("log.txt",8,True)
  39. While True
  40. Set objProc  = GetObject("winmgmts:\\.\root\cimv2:win32_processor='cpu0'")
  41. iCpuUsePercentage=objProc.LoadPercentage
  42. objTextFileWriter.WriteLine("[" & Now & "]    CPU使用率:" & iCpuUsePercentage & "%")
  43. if iCpuUsePercentage>=80 then
  44.   iSecond=iSecond+1
  45. else
  46.   iSecond=0
  47.   bIsExecuteBat=False
  48. end if
  49. set objFileInfo=objFileStream.getfile("Log.txt")
  50. if (objFileInfo.size/1024/1024) >=2 then
  51.   objTextFileWriter.close
  52.   objFileStream.MoveFile "Log.txt",Replace(Replace(Replace(Now,":",""),"-","")," ","") & "BackLog.txt"  
  53.   set objTextFileWriter=objFileStream.opentextfile("log.txt",8,True)
  54. end if
  55. Wend
复制代码

作者: CrLf    时间: 2016-3-28 23:41

有没有人有兴趣写个第三方,专门用来监控 bat 的运行情况?
比如:
  1. try.exe 测试.bat 参数1 参数2
复制代码
返回:
  1. TICKS=15000
  2. EXITCODE=5
  3. CUP_min=1
  4. CPU_max=25
  5. CPU_ave=13
  6. MEM_min=4
  7. MEM_max=128
  8. MEM_ave=74
  9. ......
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2