回答:
コマンドライン構文:
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"
小さな追加。
また、次のような整数(記憶しやすい)の代わりに文字列値を使用することもできます。
wmic process where name="calc.exe" CALL setpriority "idle"
可能な値:「アイドル」、「低」、「通常以下」、「通常」、「通常以上」、「高優先度」、「リアルタイム」
PS。特に文字列値に複数の単語を使用する場合は、引用符を忘れないでください
バッチコマンドラインからは、単にPowerShellを使用します。この例では、calc.exeを起動し、そのプロセスを見つけて、優先度クラスを「アイドル」(別名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ユーティリティはまだ動作する可能性がありますが、私は今何年も試していません。
これらのソリューションの中には、システムサービスで動作しないものや、管理者として実行する必要があるものがあります。
Windows 7 64ビットを実行しています。
WMICコマンドがあるではない信頼性の高いです。私のかなりの経験では、あまりにも多くの(ほとんど説明できない)理由で予期せず失敗します。
信頼性のため、可能な限り最良のコマンドはSTARTコマンドです。構文は非常に簡単です(これはバッチファイルの3行実行コマンドです)。
:: Boost thread priority
SET command=<program.exe> <options>
start "" /REALTIME /B /W %command%
私の意見では、その高い信頼性は、プログラムが異なる優先度で実行を開始した後に優先度を調整しようとするのではなく、.exeプログラムが起動される優先度レベルを設定するという事実に由来します。
wmic process where "CommandLine like '%calc%'" CALL setpriority "below normal"