Respostas:
A sintaxe da linha de comando:
wmic process where name="AppName" CALL setpriority ProcessIDLevel
Exemplo:
wmic process where name="calc.exe" CALL setpriority 32768
ou
wmic process where name="calc.exe" CALL setpriority "above normal"
Prioridade:
wmic process where 'name="calc.exe"' CALL setpriority "idle"
Uma pequena adição.
Você também pode usar valores de sequência em vez de números inteiros (mais fáceis de memorizar) assim:
wmic process where name="calc.exe" CALL setpriority "idle"
Valores possíveis: "inativo", "baixo", "abaixo do normal", "normal", "acima do normal", "alta prioridade", "tempo real"
PS. Não esqueça as aspas, especialmente se estiver usando várias palavras em um valor de sequência
Na linha de comando em lote, eu simplesmente usaria o PowerShell. Este exemplo inicia o calc.exe, encontra seu processo e ajusta sua classe de prioridade para "IDLE", também conhecido como LOW:
start /b /wait powershell.exe -command "calc.exe;$prog = Get-Process -Name calc;$prog.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::IDLE"
Especifique um dos seguintes valores de enumeração: " Normal, Idle, High, RealTime, BelowNormal, AboveNormal
"
Aqui está a mesma coisa do PowerShell com linhas divididas:
calc.exe
$prog = Get-Process -Name calc
$prog.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::IDLE
Além das respostas existentes, a pergunta Windows Equivalent of 'nice' lista mais algumas soluções:
Além disso, o antigo utilitário SetPriority ainda pode funcionar, mas não o tenho testado há muitos anos.
Algumas dessas soluções podem não funcionar nos serviços do sistema ou podem precisar ser executadas como administrador .
Estou executando o Windows 7 de 64 bits.
O comando wmic não é confiável. Na minha experiência considerável, ele falha inesperadamente por muitas razões (na maioria inexplicáveis).
O melhor comando possível, devido à sua confiabilidade, é o comando START. A sintaxe é muito simples (este é o comando de execução em três linhas para um arquivo em lotes ):
:: Boost thread priority
SET command=<program.exe> <options>
start "" /REALTIME /B /W %command%
Na minha opinião, seu alto grau de confiabilidade decorre do fato de definir o nível de prioridade com o qual o programa .exe é iniciado, em vez de tentar interferir na prioridade depois que o programa começar a ser executado com uma prioridade diferente.
wmic process where "CommandLine like '%calc%'" CALL setpriority "below normal"