使用批处理脚本获取cpu利用率百分比

时间:2014-10-20 17:42:12

标签: batch-file

我在命令提示符下执行了以下命令。

输入:

 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 wmih=@for /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

我没有得到正确的输出。请帮我解决一下。

感谢!!!

2 个答案:

答案 0 :(得分:1)

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%

答案 1 :(得分:0)

只是为了保持你的结构

:CPU
set "wmih=@for /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^> 
)

在这两种情况下,要删除检索到的值末尾的附加CR字符,查询请求带有aditional字段的csv格式的输出,因此,所需的数据不在行的末尾和值将不包括结束CR