在'for'循环中使用变量

时间:2011-06-16 14:11:46

标签: batch-file for-loop

我有以下代码:

@echo off
SET ITER=0
for %%i in (%*) do (
  SET ITER+=1
  ECHO %ITER%
)

输出是(对于三个参数):

0
0
0

预期产出:

1
2
3

为什么我无法访问for循环中的更新变量?

1 个答案:

答案 0 :(得分:5)

使用百分比扩展变量是在执行语句/块之前完成的 因此,在您的情况下,完整的块在echo %ITER%执行之前被扩展为常量echo 0 变量ITER本身在循环中正确更新。

为了避免这种情况,你可以使用延迟扩展,这就像百分比扩展一样,但只是在执行时

@echo off
setlocal EnableDelayedExpansion
SET ITER=0
for %%i in (%*) do (
  SET /a ITER+=1
  ECHO !ITER!
)