コマンドラインを使用したWindowsプロセスの優先度の変更


回答:


54

コマンドライン構文:

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(または「リアルタイム」)

7
また、ワイルドカード行うことができます wmic process where "CommandLine like '%calc%'" CALL setpriority "below normal"
laggingreflex

Process Explorerのように、バックグラウンド(低IOおよびメモリ優先度)に対して同じことを行うことは可能ですか?
miky 14

これはバッチの「cmd.exe」でも動作しますか?...そのcmd.exeを起動するバッチ?
ゲーマー0

注:最初の引用符のセットは必須であるため、他のシェルでは引用符をエスケープ(または二重引用符)する必要があります。Cygwinの場合:wmic process where 'name="calc.exe"' CALL setpriority "idle"
piojo

1
なぜ通常の値より下/上がとても大きくて奇妙なのですか?そして、なぜアイドルとリアルタイムの両方よりも通常が少ないのですか?
phuclv

11

小さな追加。

また、次のような整数(記憶しやすい)の代わりに文字列値を使用することもできます。

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

可能な値:「アイドル」、「低」、「通常以下」、「通常」、「通常以上」、「高優先度」、「リアルタイム」

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


複数の単語を使用しない場合でも、最初の引用符のセットは必須です。また、シェルによって解釈されるのではなく、コマンドに渡される必要があります。
ピオジョ

win10 Pro 1809では、「低」は認識される値ではなく、エラーがスローされます。「アイドル」使用すると、プロセスは、タスクマネージャでは、「低」の優先度として表示されます...
ljwobker

5

バッチコマンドラインからは、単に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

前に言ったことを繰り返す意味は何ですか?
harrymc 14

@harrymc PowerShellを使用して、元の質問に答えます。
パラドロイド14

@harrymc-実際、私はDECから言ったことを繰り返しています。 stackoverflow.com/questions/20693028/...
ナックル・ドラッガー

問題ない。ちょうど似たようなものにリンクしただけです。
ハリーマック14

4

既存の回答に加えて、「Windowsの「nice」と同等の質問」に は、さらにいくつかのソリューションがリストされています。

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

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

これらのソリューションの中には、システムサービスで動作しないものや、管理者として実行する必要があるものがあります


vbScriptソリューションの明らかな障害は、そのタスクを完了するために23行のコードが必要なことです(つまり、優先度レベルを設定します)。裸のコマンドプロンプト):start "" / realtime / b / w program.exe
Ed999

1

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

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

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

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

私の意見では、その高い信頼性は、プログラムが異なる優先度で実行を開始したに優先度を調整しようとするのではなく、.exeプログラムが起動される優先度レベルを設定するという事実に由来します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.