명령 행을 통해 Windows 프로세스 우선 순위 변경


답변:


55

명령 줄 구문 :

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 (또는 "정상 미만")
  • normal : 32 (또는 "normal")
  • 정상 이상 : 32768 (또는 "정상 이상")
  • 우선 순위 : 128 (또는 "높은 우선 순위")
  • 실시간 : 256 (또는 "실시간")

7
와일드 카드를 사용할 수도 있습니다 wmic process where "CommandLine like '%calc%'" CALL setpriority "below normal"
laggingreflex

프로세스 탐색기에서와 같이 백그라운드 (낮은 IO 및 메모리 우선 순위)에 대해 동일한 작업을 수행 할 수 있습니까?
miky

이 배치에서 "cmd.exe"에서도 작동합니까? ... 그 cmd.exe를 시작하는 배치?
gamer0

참고 : 첫 번째 따옴표 세트는 필수이므로 다른 셸에서는 따옴표를 이스케이프 처리하거나 큰 따옴표로 묶어야합니다. Cygwin에서 :wmic process where 'name="calc.exe"' CALL setpriority "idle"
piojo

2
왜 정상 값이 너무 크거나 이상합니까? 그리고 왜 정상이 유휴 및 실시간보다 적습니까?
phuclv

11

작은 추가.

다음과 같이 정수 대신 암기하는 문자열 값을 사용할 수도 있습니다.

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

가능한 값 : "유휴", "낮음", "정상", "정상", "정상", "높은 우선 순위", "실시간"

추신. 특히 문자열 값에 여러 단어를 사용하는 경우 따옴표를 잊지 마십시오


여러 단어를 사용하지 않더라도 첫 번째 따옴표 세트는 필수입니다. 또한 쉘에 의해 해석되지 않고 명령으로 전달되어야합니다.
piojo

win10 Pro 1809에서 "낮음"은 인식되는 값이 아니며 오류가 발생합니다. "유휴"를 사용하면 프로세스가 작업 관리자에서 "낮음"우선 순위로 표시됩니다.
ljwobker

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

이전에 말한 것을 반복하는 요점은 무엇입니까?
harrymc

@harrymc PowerShell을 사용하여 원래 질문에 대답합니다.
paradroid 2019

@ harrymc-실제로 DEC에서 말한 것을 반복합니다. stackoverflow.com/questions/20693028/…
너클-드래 거

문제 없어. 내가 아주 비슷한 것에 연결했다는 것입니다.
harrymc

5

기존 답변 외에도 Windows Equivalent of 'nice'라는 질문 에는 몇 가지 솔루션이 더 있습니다.

  1. 명령 프롬프트 (CMD)에서 START 명령 사용
  2. 무료 ProcessTamer 를 사용하여 프로세스가 시작될 때마다 자동으로 적용되는 .exe에 규칙을 설정합니다.
  3. PowerShell 스크립트 사용하여 여기에 포함을 .
  4. VBScript를 스크립트를 사용하여 여기에 포함을 .

또한 이전 SetPriority 유틸리티가 여전히 작동 할 수 있지만 몇 년 동안 시도하지 않았습니다.

이러한 솔루션 중 일부는 시스템 서비스에서 작동하지 않거나 관리자 권한으로 실행 해야 할 수 있습니다 .


vbScript 솔루션의 명백한 걸림돌은 작업을 수행하기 위해 23 줄의 코드가 필요하다는 것입니다 (즉, 우선 순위 수준 설정) .START 명령은 두 줄만 사용하면됩니다 (한 번에 한 줄에 베어 명령 프롬프트) : ""/ realtime / b / w program.exe
Ed999

1

Windows 7 64 비트를 실행하고 있습니다.

WMIC 명령은 하지 신뢰할. 필자의 상당한 경험에서 너무 많은 (주로 설명 할 수없는) 이유로 예기치 않게 실패했습니다.

신뢰성으로 인해 가능한 가장 좋은 명령은 START 명령입니다. 구문은 매우 간단합니다 ( 배치 파일에 대한 3 줄 실행 명령 ).

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

제 생각 에는 프로그램의 우선 순위가 다른 우선 순위로 실행되기 시작한 우선 순위에 얽매이지 않고 .exe 프로그램이 시작되는 우선 순위 수준을 설정한다는 사실에서 높은 수준의 안정성이 나옵니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.