コマンドラインでWindowsプロセスの優先順位を変更したい.
どうやってやるの?
コマンドライン構文:
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"
優先度:
ちょっとした追加。
整数の代わりに文字列の値を使うこともできます(覚えやすい):
wmic process where name="calc.exe" CALL setpriority "idle"
可能な値: "idle"、 "low"、 "normal未満"、 "normal"、 "normal以上"、 "高優先度"、 "リアルタイム"
PS。特に文字列値に複数の単語を使用する場合は、引用符を忘れないでください。
バッチコマンドラインからは、単純に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
既存の回答に加えて、質問Windowsと同等の 'Nice'には、さらに解決策がいくつかあります。
さらに、古い SetPriority ユーティリティはまだ機能する可能性がありますが、私は何年も試していません。
これらの解決策のいくつかはシステムサービスでは動作しないかもしれませんし、あるいは Administrator として実行する必要があるかもしれません。
Windows 7 64ビットを実行しています。
wmicコマンドはnot信頼性があります。私のかなりの経験では、あまりにも多くの(ほとんど説明できない)理由で予期せず失敗します。
信頼性のため、可能な限り最良のコマンドはSTARTコマンドです。構文は非常に単純です(これはバッチファイルの3行実行コマンドです)。
:: Boost thread priority
SET command=<program.exe> <options>
start "" /REALTIME /B /W %command%
私の意見では、その高い信頼性は、優先順位afterプログラムは別の優先度で実行を開始しました。