我想通过命令行更改 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 程序启动的优先级,而不是试图干预优先级后该程序已开始以不同的优先级运行。