通过命令行更改 Windows 进程优先级

通过命令行更改 Windows 进程优先级

我想通过命令行更改 Windows 进程优先级。

我怎样才能做到这一点?

答案1

命令行语法:

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(或“实时”)

答案2

一个小小的补充。

您还可以使用字符串值代替整数(更容易记忆),如下所示:

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

可能的值:“空闲”、“低”、“低于正常”、“正常”、“高于正常”、“高优先级”、“实时”

PS. 不要忘记引号,尤其是在字符串值中使用多个单词时

答案3

从批处理命令行,我只需使用 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

答案4

我正在运行 64 位 Windows 7。

西米克命令是不是可靠。根据我丰富的经验,它会因太多(大部分是无法解释的)原因而意外失败。

由于可靠性,最好的命令是 START 命令。语法非常简单(这是 3 行运行命令,用于批处理文件):

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

我认为它的高可靠性源于它设置了 .exe 程序启动的优先级,而不是试图干预优先级该程序已开始以不同的优先级运行。

相关内容