0
我正在嘗試編寫一個批處理程序,該程序將監視CPU使用情況並在CPU使用率較高時停止病毒掃描。它會在CPU使用率下降時重新開始掃描。使用設置數值(批處理)
ECHO Checks if the total CPU usage is greater than 10%
SET scanEnd=0
tasklist /FI "IMAGENAME eq scan32.exe" 2>NUL | find /I /N "scan32.exe">NUL
IF "%ERRORLEVEL%"=="0" (
ECHO Program is running
wmic cpu get loadpercentage /value
FOR /f "tokens=2-3 delims==" %%b in ('wmic cpu get loadpercentage /value') do (
echo %%b >> tempfile.txt
echo removed %%a)
SET /a load < tempfile.txt
DEL tempfile.txt
ECHO Load is "%load%"
IF load GEQ 10 (
ECHO High cpu usage
TSKILL scan32
SET scanEnd=1
))
PAUSE
IF "1" == "%scanEnd%" (
ECHO Scan not finished
IF load LSS 10 (
ECHO Restarting scan
"C:\Program Files\McAfee\VirusScan Enterprise\scan32.exe"
SET scanEnd=0))
ECHO End of program
PAUSE
wmic返回LoadPercentage = 0(或其他數字)形式的CPU使用情況。我用for循環過濾並分配數字加載。由於我不明白的原因,這個作業有些問題。我無法回顯該值(顯示「」),無論我如何定義高CPU使用率,負載都會通過IF GEQ語句。即使是0%的負載明顯大於10.我知道問題出在設置上,因爲我檢查了tempfile.txt並且它被正確過濾了,但我仍然不知道爲什麼它是錯誤的。
感謝您的任何幫助。
非常感謝參考一下吧!我不得不啓用延遲,但它的工作完美。 – VerrKol 2012-07-25 23:18:30