日期:2014-05-17 浏览次数:21241 次
@echo off set DstFile=C:\test\cpu_mem.log if not exist %DstFile% ( type nul>"%DstFile%" ) :cpu for /f "tokens=2 delims==" %%a in ('wmic path Win32_PerfFormattedData_PerfOS_Processor get PercentProcessorTime /value ^| findstr "PercentProcessorTime"') do ( set UseCPU=%%a goto :mem ) :mem for /f "tokens=2 delims==" %%a in ('wmic path Win32_PhysicalMemory get * /value ^| findstr "Capacity"') do ( set TalMem=%%a ) for /f "tokens=2 delims==" %%a in ('wmic path Win32_PerfFormattedData_PerfOS_Memory get * /value ^| findstr "AvailableBytes"') do ( set UseMem=%%a ) :show >>"%DstFile%" echo CPU使用率:%UseCPU%%% >>"%DstFile%" echo 物理内存总量:%TalMem% >>"%DstFile%" echo 当前可用内存:%UseMem%
------解决方案--------------------
内存使用率计算一下就可以啦``~
完整代码如下:
'/************************************************************************/ ' ' FileName: WriteUsage.vbs ' ' Author: Chinafish ' ' Email: china_fish@163.com ' ' Homepage: http://www.csinx.org ' ' Desc: Write CPU & Memory usage ' '/************************************************************************/ on error resume next const TargetFile = "C:\Usage.log" Dim dwTotalMem, dwAvailMem '定时循环记录 do while true const ForReading = 1 const ForWriting = 2 Set fso = CreateObject("Scripting.FileSystemObject") '没有文件先创建文件 Set MyFile = fso.CreateTextFile(TargetFile, false) MyFile.Close '打开创建的文件读出原来的内容 Set MyFile = fso.OpenTextFile(TargetFile, ForReading) strContent = MyFile.ReadAll MyFile.Close '先写原文件内容 Set MyFile = fso.OpenTextFile(TargetFile, ForWriting) '文件无内容时写文件头 if strContent <> "" then MyFile.WriteLine(strContent) else MyFile.WriteLine("/*Usage.log file write by Chinafish.*/") MyFile.WriteBlankLines 1 End if '写开始时间 MyFile.WriteLine("程序启动时间: " & Now()) '本地电脑 strComputer = "." '连接到本地电脑 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.InstancesOf("Win32_LogicalMemoryConfiguration") '总计物理内存 For Each colItem In colItems dwTotalMem = CLng(colItem.TotalPhysicalMemory / 1024) MyFile.WriteLine("总计物理内存: " & CLng(colItem.TotalPhysicalMemory / 1024) & "MB") Next '剩余内存 Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfOS_Memory",,48) For Each objItem in colItems dwAvailMem = objItem.AvailableMBytes MyFile.WriteLine("剩余物理内存: " & objItem.AvailableMBytes & "MB") Next '物理内存使用率(第一行精确到小数后2位, 第二行取整数) 'MyFile.WriteLine("物理内存使用: " & CInt((1 - dwAvailMem/dwTotalMem)*100*100)/100 & "%") MyFile.WriteLine("物理内存使用: " & CInt((1 - dwAvailMem/dwTotalMem)*100) & "%") 'CPU数和使用率 Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48) i = 0 For Each objItem in colItems MyFile.WriteLine("CPU(" & i & ")使用率: " & objItem.LoadPercentage & "%") i = i + 1 Next '写结束时间 MyFile.WriteLine("程序结束时间: " & Now()) MyFile.Close Set fso = Nothing Set MyFile = Nothing '睡眠达到定时操作目的 参数是ms 1000是1秒 WScript.Sleep 1000*60*0.1 Loop