2013-10-23 3 views
0

2 * CPU가있는 서버가 있습니다. 내가 서버에 코드 아래에 실행할 때 두 CPU의 LoadPercentage 값을 제공합니다 같은 :2 개의 CPU를 가진 서버로드

코드 :

@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로드 백분율의 단일 값을 얻는 방법은 무엇입니까?

답변

1

예,로드를 프로세서 수로 나눈 값입니다.

루프에서, 당신은로드를 얻으면서, 그들을 합산하고 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 
+0

thanks..MC ..! pls는 내 대답을 참조 ..! :) – Sunny

0

Here..it 작동합니다 (OP 자신의 답 이상)

편집 ..

@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 
+1

을 그 프로세서 수가 2 개인 경우 실패합니다. 또한, 너무 많이 (그리고 "더 쉽습니다. 제발, 업데이트 된 답변을 참조하십시오. –

+0

유 ..와 함께 동의 !! :) – Sunny

관련 문제