0

我有一个 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

输出.txt:

LoadPercentage 2
LoadPercentage 4

在服务器上的任务管理器-> 性能中,它只显示一个值(显然,因为服务器是 1)。当 CPU 为两个时,这个值如何显示...?是两个人的平均数吗?如何使用批处理获得 CPU 负载百分比的单个值?

4

2 回答 2

1

是的,它是负载总和除以处理器数量。

for循环中,当您获得负载时,将它们相加并计算 CPU 的数量。for退出时,set /a average=...会给出答案。

编辑(通过OP自己的答案)

@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
于 2013-10-23T15:52:48.423 回答
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
于 2013-10-24T01:14:38.473 回答