我有一台带2 * CPU的服务器。当我在服务器上运行下面的代码时,它给出了两个CPU LoadPercentage值:
码
@echo off
setlocal enabledelayedexpansion
(For /F "tokens=1,* delims==" %%A in ('"wmic cpu get LoadPercentage /value |find "P" "') do (
set "line=%%A %%B"
set "line=!line:~0,-1!"
echo !line!
))>output.txt
output.txt的:
LoadPercentage 2
LoadPercentage 4
在任务管理器的服务器上 - >性能时,它只显示一个值(显然,服务器为1)。 当CPU为2时,这个值是如何显示的?这是两个人的平均值吗?如何使用批处理获得单个CPU负载百分比值?
答案 0 :(得分:1)
是的,它是负载总和除以处理器数量。
在for
循环中,当您获得负载时,将它们相加并计算cpus的数量。在for
退出时,set /a average=...
会给出答案。
@echo off
setlocal enableextensions enabledelayedexpansion
rem Initialize variables
set sum=0
set num=0
rem Iterate over wmic output
for /f "tokens=2 delims==" %%1 in ('wmic cpu get LoadPercentage /value ^|find "P" ') do (
set /a sum=!sum!+%%1
set /a num=!num!+1
)
rem test if we get any data
if %num% gtr 0 (
set /a avg=%sum%/%num%
) else (
set avg=0
)
echo CPULoadPercentage %avg% > output.txt
exit /b
答案 1 :(得分:0)
这里......工作..
@echo off
setlocal enabledelayedexpansion
set sum=0
(for /f "tokens=1-2* delims==" %%1 in ('"wmic cpu get LoadPercentage /value |find "P" "') do (
set /a sum=!sum!+%%2
)
set /a avg=!sum!/2
echo CPULoadPercentage !avg!
)>output.txt
exit /b