BATCH,总结FOR循环中的变量

时间:2015-11-06 13:51:24

标签: batch-file for-loop

我有一个带有FOR循环的批处理文件,如下所示:

set /a target=5

FOR /L %%G IN (1,1,%target%) DO (
    echo %%G)

它就像一个魅力%% G将1,2,3,4,5。

现在我想要一个像test = %% G + 1这样的新版本,它将是:2,3,4,5,6

但是使用这段代码它不起作用。

set /a target=5

FOR /L %%G IN (1,1,%target%) DO (
    echo %%G
    set /a test=%%G+1
    echo %test%
)

测试变量每次都是:6

我该怎么办?

由于 罗伯特

1 个答案:

答案 0 :(得分:2)

在评估EnabledDelayedExpansion循环中设置的变量时,您需要使用FOR

@ECHO OFF
SETLOCAL EnableDelayedExpansion

set /a target=5

FOR /L %%G IN (1,1,%target%) DO (
    echo %%G
    set /a test=%%G+1

    REM Note the exclamation marks.
    REM This is delayed expansion notation.
    echo !test!
)

ENDLOCAL

如果您不使用延迟扩展,那么所有变量都会在FOR循环的第一次传递时进行评估,因此%test%此时实际上不会有值。 通过启用延迟展开(并使用!test!表示法),脚本将在每次传递时评估!test! 的值