35

Я хочу изменить приоритет процесса Windows через командную строку.

Как я могу это сделать?

5 ответов5

49

Синтаксис командной строки:

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 (или "в реальном времени")
10

Небольшое дополнение.

Вы также можете использовать строковые значения вместо целых чисел (их легче запомнить), например:

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

Возможные значения:"холостой", "низкий", "ниже нормы", "нормальный", "выше нормы", "высокий приоритет", "реальное время"

PS. Не забывайте кавычки, особенно если вы используете несколько слов в строковом значении

5

Из командной строки я бы просто использовал 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

В дополнение к существующим ответам на вопрос Windows Equivalent of «nice» перечислены еще несколько решений:

  1. Использование команды START в командной строке (CMD).
  2. Использование бесплатного ProcessTamer для настройки правила для EXE-файла, которое автоматически применяется при каждом запуске этого процесса.
  3. Использование скрипта PowerShell, содержащегося здесь.
  4. Использование сценария VBScript, содержащегося здесь.

Кроме того, старая утилита SetPriority может все еще работать, но я не пробовал ее уже много лет.

Некоторые из этих решений могут не работать с системными службами или могут быть запущены от имени администратора.

0

Я использую Windows 7 64-bit.

Команда wmic не является надежной. По моему значительному опыту, он неожиданно потерпел неудачу по слишком многим (главным образом необъяснимым) причинам.

Лучшая команда из-за своей надежности - команда START. Синтаксис очень прост (это команда запуска из 3 строк для командного файла):

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

По моему мнению, его высокая степень надежности проистекает из того факта, что он устанавливает уровень приоритета, с которым запускается программа .exe, а не пытается вмешиваться с приоритетом после запуска программы с другим приоритетом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .