web-dev-qa-db-fra.com

Modification de la priorité des processus Windows via la ligne de commande

Je souhaite modifier la priorité des processus Windows via la ligne de commande.

Comment puis je faire ça?

36
Bobs

La syntaxe de ligne de commande:

wmic process where name="AppName" CALL setpriority ProcessIDLevel

Exemple:

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

ou

wmic process where name="calc.exe" CALL setpriority "above normal"

Priorité:

  • inactif: 64 (ou "inactif")
  • sous la normale: 16384 (ou "sous 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")
51
Bobs

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: "inactif", "faible", "inférieur à la normale", "normal", "supérieur à la normale", "priorité élevée", "temps réel"

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

11
Ashtray

En ligne de commande batch, j'utiliserais simplement PowerShell. Cet exemple démarre avec calc.exe, trouve son processus et ajuste sa classe de priorité sur "IDLE"

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 de PowerShell avec les lignes divisées:

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

Outre les réponses existantes, la questionl'équivalent Windows de 'Nice' } répertorie quelques solutions supplémentaires:

  1. Utilisation de commande START dans l'invite de commande (CMD).
  2. Utilisation de la libre ProcessTamer pour configurer une règle sur le fichier .exe qui est automatiquement appliquée à chaque démarrage de ce processus.
  3. Utilisation d'un script PowerShell contenu ici .
  4. Utilisation d’un script VBScript contenu ici .

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

Certaines de ces solutions risquent de ne pas fonctionner sur les services système ou d’être Exécuter en tant qu’administrateur .

4
harrymc

J'utilise Windows 7 64 bits.

La commande wmic est not fiable. Dans ma grande expérience, il échoue de manière inattendue pour de nombreuses raisons (pour la plupart 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 ):

::  Boost thread priority
SET command=<program.exe> <options>
start "" /REALTIME /B /W  %command%

À 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 modifier la priorité après le programme a commencé à s’exécuter avec une priorité différente. .

1
Ed999