web-dev-qa-db-ja.com

コマンドラインからWindowsプロセスの優先順位を変更する

コマンドラインでWindowsプロセスの優先順位を変更したい.

どうやってやるの?

37
Bobs

コマンドライン構文:

wmic process where name="AppName" CALL setpriority ProcessIDLevel

例:

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

または

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

優先度:

  • アイドル:64(または「アイドル」)
  • 通常より下:16384(または「通常より下」)
  • ノーマル:32(または "ノーマル")
  • 通常より上:32768(または「通常より上」)
  • 高優先度:128(または「高優先度」)
  • リアルタイム:256(または「リアルタイム」)
51
Bobs

ちょっとした追加。

整数の代わりに文字列の値を使うこともできます(覚えやすい):

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

可能な値: "idle"、 "low"、 "normal未満"、 "normal"、 "normal以上"、 "高優先度"、 "リアルタイム"

PS。特に文字列値に複数の単語を使用する場合は、引用符を忘れないでください。

11
Ashtray

バッチコマンドラインからは、単純にPowerShellを使用します。この例ではcalc.exeを起動し、そのプロセスを見つけ、その優先度クラスを "IDLE"(別名LOW)に調整します。

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

次の列挙値のいずれかを指定してください。 "Normal, Idle, High, RealTime, BelowNormal, AboveNormal"

これは、PowerShellの分割線と同じものです。

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

既存の回答に加えて、質問Windowsと同等の 'Nice'には、さらに解決策がいくつかあります。

  1. コマンドプロンプト(CMD)で コマンドSTART を使用する。
  2. そのプロセスが開始されるたびに自動的に強制される.exe上のルールを設定するためにfree ProcessTamer を使用する。
  3. ここに含まれているPowerShellスクリプト を使用します
  4. ここに含まれるVBScriptスクリプト を使用します

さらに、古い SetPriority ユーティリティはまだ機能する可能性がありますが、私は何年も試していません。

これらの解決策のいくつかはシステムサービスでは動作しないかもしれませんし、あるいは Administrator として実行する必要があるかもしれません。

4
harrymc

Windows 7 64ビットを実行しています。

wmicコマンドはnot信頼性があります。私のかなりの経験では、あまりにも多くの(ほとんど説明できない)理由で予期せず失敗します。

信頼性のため、可能な限り最良のコマンドはSTARTコマンドです。構文は非常に単純です(これはバッチファイルの3行実行コマンドです)。

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

私の意見では、その高い信頼性は、優先順位afterプログラムは別の優先度で実行を開始しました。

1
Ed999