使用批处理脚本获取CPU利用率百分比
问题描述:
我在命令提示符下执行了下面的命令。使用批处理脚本获取CPU利用率百分比
输入:
C:\>@for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %p%
8%
%
我写的代码只得到8%的批处理脚本像下面,
call :Harddisk
call :CPU
Echo ^</TABLE^> ^</BODY^> ^</HTML^> >> %opfile%
pause
exit /b
:CPU
set [email protected] /f skip=1 %p in ('wmic cpu get loadpercentage') do @echo %p% |Find /c /v ":"
ECHO wmih
for /f "tokens=1,2,3,4,5" %%a in ('"%wmih%"') do (
Echo ^<TR^> ^<TD^> >> %opfile%
Echo CPU Utilization: %%a >> %opfile%
Echo ^</TD^> ^</TR^> >> %opfile%
)
exit /b
我没有得到正确的输出。请帮我整理一下。
谢谢!
答
for /f "tokens=2 delims==" %%i in ('wmic cpu get loadpercentage /value ^|find "="') do echo set p=%%i
set p=%p:~0,-1%
echo %p%
答
只是为了让你的结构
:CPU
set "[email protected] /f "usebackq skip^^^=2 tokens^^^=2 delims^^^=^^^," %%p in (`wmic cpu get loadpercentage^^^,version /format^^^:csv`) do @echo(%%p%%"
ECHO %wmih%
for /f "tokens=1,2,3,4,5" %%a in ('"%wmih%"') do (
>>%opfile% Echo ^<TR^> ^<TD^>
>>%opfile% Echo CPU Utilization: %%a
>>%opfile% Echo ^</TD^> ^</TR^>
)
为了能够存储命令在变量中,然后将它传递给for
命令,将产生另一个cmd
实例来执行命令,你需要大量的scape字符来处理命令的执行。
它可以更容易
:CPU
for /f "skip=2 tokens=2 delims=," %%a in (
'wmic cpu get loadpercentage^,version /format^:csv'
) do (
>>%opfile% Echo ^<TR^> ^<TD^>
>>%opfile% Echo CPU Utilization: %%a%%
>>%opfile% Echo ^</TD^> ^</TR^>
)
在这两种情况下,在检索到的值,所述查询请求的输出以CSV格式与aditional的字段的结尾去除aditional的CR字符,所以,在需要的数据不在行尾,值不会包含结尾CR
不,它工作得更好,因为当在变量内容中找到第一个CR时,'echo%p%'结束工作。在这种情况下'find'不会改变行结束。为了测试,在代码中加入'cmd/v:on/c“echo!p!...!p!”'并查看输出。 – 2014-10-21 06:10:07
grrr。我会*讨厌那个丑陋的'wmic'output ...所以'%p%'仍然包含那。但可以删除。改变了我的代码。 –
Stephan
2014-10-21 06:57:58