Получить использование ЦП из командной строки Windows - PullRequest
40 голосов
/ 01 февраля 2012

Как получить общее использование ЦП из командной строки Windows?:

Ожидаемый результат:

27%

Ответы [ 4 ]

80 голосов
/ 01 февраля 2012
C:\> wmic cpu get loadpercentage
LoadPercentage
0

Или

C:\> @for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %p%
4%
11 голосов
/ 01 февраля 2012

Следующее правильно работает в Windows 7 Ultimate из командной строки с повышенными привилегиями:

C:\Windows\system32>typeperf "\Processor(_Total)\% Processor Time"

"(PDH-CSV 4.0)","\\vm\Processor(_Total)\% Processor Time"
"02/01/2012 14:10:59.361","0.648721"
"02/01/2012 14:11:00.362","2.986384"
"02/01/2012 14:11:01.364","0.000000"
"02/01/2012 14:11:02.366","0.000000"
"02/01/2012 14:11:03.367","1.038332"

The command completed successfully.

C:\Windows\system32>

Или для снимка:

C:\Windows\system32>wmic cpu get loadpercentage
LoadPercentage
8
8 голосов
/ 01 февраля 2012
typeperf "\processor(_total)\% processor time"

работает на Win7, вам просто нужно извлечь значение процента из последней строки в кавычках.

1 голос
/ 19 апреля 2018

typeperf вызывает у меня проблемы, когда он случайно не работает на некоторых компьютерах (Error: No valid counters.) или если у учетной записи недостаточно прав.Иначе, вот способ извлечь только значение из его вывода.Тем не менее, требуется округление:

@for /f "delims=, tokens=2" %p in ('typeperf "\Processor(_Total)\% Processor Time" -sc 3 ^| find ":"') do @echo %~p%

У Powershell есть два командлета для получения процента использования для всех процессоров: Get-Counter (предпочтительно) или Get-WmiObject:

Powershell "Get-Counter '\Processor(*)\% Processor Time' | Select -Expand Countersamples | Select InstanceName, CookedValue"

Или,

Powershell "Get-WmiObject Win32_PerfFormattedData_PerfOS_Processor | Select Name, PercentProcessorTime"


Чтобы получить общую загрузку ЦП с форматированным выводом в точности как в вопросе:

Powershell "[string][int](Get-Counter '\Processor(*)\% Processor Time').Countersamples[0].CookedValue + '%'"

Или

 Powershell "gwmi Win32_PerfFormattedData_PerfOS_Processor | Select -First 1 | %{'{0}%' -f $_.PercentProcessorTime}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...