2017-12-29 8 views
0

이 코드를 사용하여 활성 프로세스 목록에서 루프를 실행하여 이름순으로 프로세스를 식별하여 우선 순위를 변경합니다.박쥐 파일 루프가 너무 일찍 종료 됨

TIMEOUT /T 1 
for /F "tokens=1,2" %%i in ('tasklist /FI "IMAGENAME eq java.exe" /fo table /nh') do set pid=%%j 
echo %pid% 
wmic process where processid=%pid% CALL setpriority 128 
exit 

내 문제는 "java.exe"라는 프로세스가 두 개 이상 있지만 코드에서 모두 영향을 주길 바랍니다. 이것을 어떻게 할 수 있습니까?

+0

[지연 확장] (https://ss64.com/nt/delayedexpansion.html) 트랩 .... – SteveFest

+0

for 루프 블록이 없습니다. for 루프의 유일한 명령은'set'입니다. –

답변

0
for /F "tokens=1,2" %%i in ('tasklist /FI "IMAGENAME eq java.exe" /fo table /nh') do (
echo %%j 
wmic process where processid=%%j CALL setpriority 128 
) 

(안된)

+0

은 매력처럼 작동했습니다 - 감사합니다! 새해 복 많이 받으세요 – piguy

0

이 방법을 사용하면 변수 pid 사용할 수 있습니다,하지만 당신은 지연 확장을 사용해야합니다.

SETLOCAL ENABLEDELAYEDEXPANSION 
for /F "tokens=1,2" %%i in ('tasklist /FI "IMAGENAME eq java.exe" /fo table /nh') do set pid=%%j 
echo !pid! 
wmic process where processid=!pid! CALL setpriority 128 
exit 
  • setlocal 라인이 아닌 구문 시간 런타임에서 변수를 처리 할 cmd를 허용하는 것입니다.

  • !은 어구 시간이 아닌 런타임에 변수를 처리하는 것을 나타냅니다.

관련 문제