How to get the current CPU usage and available memory in batch file?

こ雲淡風輕ζ 提交于 2019-12-03 03:09:27
Monacraft

You could always utilise the systeminfo command, but then would be forced to go through a brief loading screen

set totalMem=
set availableMem=
set usedMem=
REM You need to make a loop
for /f "tokens=4" %%a in ('systeminfo ^| findstr Physical') do if defined totalMem (set availableMem=%%a) else (set totalMem=%%a)
set totalMem=%totalMem:,=%
set availableMem=%availableMem:,=%
set /a usedMem=totalMem-availableMem
Echo Total Memory: %totalMem%
Echo Used Memory: %usedMem%

And that should do exactly what you want. This code can easily be modified to show Virtual Memory as well. (The use of set totalMem=%totalMem:,=% and set availableMem=%availableMem:,=% gets rid of commas in the variables.)

Mona

Firstly, when running from a batch file, the for loop variable needs two percentage symbols - %%p

Secondly, you need to echo %%p, not %p%:

for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do echo %%p

From the command line:

for /f "skip=1" %p in ('wmic cpu get loadpercentage') do echo %p
typeperf "\processor(_Total)\% Processor Time"  -SC 1 -y

or

C:\>logman create counter CPU_Usage3 -c "\Processor(_Total)\% Processor Time" -f csv -o %temp%\cpu.csv
The command completed successfully.

C:\>logman start CPU_Usage3
The command completed successfully.

C:\>logman stop CPU_Usage3
The command completed successfully.

C:\>type %temp%\cpu*.csv
The system cannot find the file specified.

Typeperf is not available for WindowsXP home ,but logman requires admin privileges and creates a temp file. TYPEPERF . LOGMAN . For the memory check these counters: http://ss64.com/nt/syntax-performance-counters.html

OPMind
@echo off

setlocal enabledelayedexpansion

set Times=0

for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do (

set Cpusage!Times!=%%p

set /A Times=!Times! + 1

)

echo Percentage = %Cpusage0%

pause
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!