bat文件循环太早停止

时间:2017-12-29 14:18:06

标签: windows loops batch-file

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

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

我的问题是我有多个进程叫做#34; java.exe"但我希望他们都能受到我的代码的影响。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分: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
)

(未测试的)

答案 1 :(得分: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在运行时处理变量,而不是短语时间。

  • !表示在运行时处理变量,而不是短语时间。