58 votes

Obtenir l'utilisation du CPU à partir de l'invite de commande Windows

Comment obtenir l'utilisation totale du processeur à partir de l'invite de commande Windows ?

Résultats attendus :

27%

106voto

Alex K. Points 67805
C:\> wmic cpu get loadpercentage
LoadPercentage
0

Ou

C:\> @for /f "skip=1" %p in ('wmic cpu get loadpercentage') do @echo %p%
4%

17voto

mdm Points 7651

La procédure suivante fonctionne correctement sous Windows 7 Ultimate à partir d'une invite de commande élevée :

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>

Ou pour un instantané :

C:\Windows\system32>wmic cpu get loadpercentage
LoadPercentage
8

8voto

Martin Rennix Points 1089
typeperf "\processor(_total)\% processor time"

fonctionne sous Win7, vous devez simplement extraire vous-même la valeur en pourcentage de la dernière chaîne entre guillemets.

3voto

Amit Naidu Points 876

typeperf me pose des problèmes lorsqu'il ne fonctionne pas de manière aléatoire sur certains ordinateurs ( Error: No valid counters. ) ou si le compte ne dispose pas de droits suffisants. Sinon, voici un moyen d'extraire juste la valeur de sa sortie. Il faut quand même arrondir les chiffres :

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

Powershell dispose de deux cmdlets pour obtenir le pourcentage d'utilisation de tous les processeurs : Get-Counter (de préférence) ou Get-WmiObject :

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

Ou,

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

Pour obtenir la charge globale du CPU avec une sortie formatée exactement comme la question :

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

Ou,

 Powershell "gwmi Win32_PerfFormattedData_PerfOS_Processor | Select -First 1 | %{'{0}%' -f $_.PercentProcessorTime}"

0voto

Denis Points 2122

Pour tous ceux qui tombent sur cette page, aucune des solutions proposées ici n'a fonctionné pour moi. J'ai découvert que c'est la façon de procéder (dans un fichier batch) :

@for /f "skip=1" %%p in ('wmic cpu get loadpercentage /VALUE') do (
   for /F "tokens=2 delims==" %%J in ("%%p") do echo %%J
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X