bat文件循环太早停止

问题描述 投票:0回答:2

我正在使用这段代码在活动进程列表中运行循环,以按名称标识进程以更改优先级。

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”的进程,但我希望它们都受我的代码影响。我怎样才能做到这一点?

windows loops batch-file
2个回答
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
投票

此方法允许您使用变量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在运行时处理变量,而不是短语时间。
  • !表示在运行时处理变量,而不是短语时间。
© www.soinside.com 2019 - 2024. All rights reserved.