Відповіді:
Синтаксис командного рядка:
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. Не забувайте лапки, особливо якщо в рядковому значенні використовується кілька слів
З командного рядка batch я просто використовую 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 все ще може працювати, але я не пробував її вже багато років.
Деякі з цих рішень можуть не працювати в системних сервісах або, можливо, їх потрібно запустити як адміністратор .
У мене працює ОС 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"