64 votes

Changer la priorité du processus Windows via la ligne de commande

Je veux changer la priorité du processus Windows via la ligne de commande.

Comment puis-je faire cela?

86voto

Philter Points 310

La syntaxe de la ligne de commande:

wmic process where name="NomApplication" CALL setpriority NiveauProcessusID

Exemple:

wmic process where name="calc.exe" CALL setpriority 32768

ou

wmic process where name="calc.exe" CALL setpriority "au-dessus de la normale"

Priorité:

  • inactif: 64 (ou "inactif")
  • en-dessous de la normale: 16384 (ou "en-dessous de la normale")
  • normal: 32 (ou "normal")
  • au-dessus de la normale: 32768 (ou "au-dessus de la normale")
  • haute priorité: 128 (ou "haute priorité")
  • temps réel: 256 (ou "temps réel")

15voto

Ashtray Points 1619

Un petit ajout.

Vous pouvez également utiliser des valeurs de chaîne au lieu d'entiers (plus faciles à mémoriser) comme ceci:

 wmic process where name="calc.exe" CALL setpriority "idle"

Valeurs possibles: "idle", "low", "below normal", "normal", "above normal", "high priority", "realtime"

PS. N'oubliez pas les guillemets, surtout si vous utilisez plusieurs mots dans une valeur de chaîne

9voto

Knuckle-Dragger Points 1973

De la ligne de commande par lots, j'utiliserais simplement PowerShell. Cet exemple lance calc.exe, trouve son processus et ajuste sa classe de priorité à "IDLE", alias LOW:

start /b /wait powershell.exe -command "calc.exe;$prog = Get-Process -Name calc;$prog.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::IDLE"

Spécifiez l'une des valeurs d'énumération suivantes: "Normal, Idle, High, RealTime, BelowNormal, AboveNormal"

Voici la même chose en PowerShell avec des lignes séparées:

calc.exe
$prog = Get-Process -Name calc
$prog.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::IDLE

5voto

harrymc Points 394411

En plus des réponses existantes, la question Équivalent Windows de 'nice' liste quelques autres solutions :

  1. Utiliser la commande START dans l'invite de commande (CMD).
  2. Utiliser le gratuit ProcessTamer pour définir une règle sur le fichier .exe qui est automatiquement appliquée chaque fois que ce processus est démarré.
  3. Utiliser un script PowerShell contenu ici.
  4. Utiliser un script VBScript contenu ici.

De plus, l'ancienne SetPriority utilitaire pourrait toujours fonctionner, mais je ne l'ai pas essayé depuis de nombreuses années maintenant.

Certaines de ces solutions peuvent ne pas fonctionner sur les services système ou nécessiter d'être Exécuté en tant qu'administrateur.

3voto

Ed999 Points 242

Je cours Windows 7 64 bits.

La commande wmic n'est pas fiable. À mon avis, elle échoue de manière inattendue pour trop de raisons (souvent inexplicables).

La meilleure commande possible, en raison de sa fiabilité, est la commande START. La syntaxe est très simple (il s'agit de la commande d'exécution en 3 lignes pour un fichier batch) :

:: Augmenter la priorité du thread
SET commande= 
start "" /REALTIME /B /W  %commande%

À mon avis, son degré élevé de fiabilité découle du fait qu'il définit le niveau de priorité avec lequel le programme .exe est lancé, plutôt que d'essayer de manipuler la priorité après que le programme a commencé à s'exécuter avec une priorité différente.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X