循环中的计数器不会被回显

时间:2017-11-15 09:47:36

标签: batch-file

我在批处理文件中有一个for循环。我用计数器变量得到了这种奇怪的行为。我是一位经验丰富的程序员,但是批处理文件的初学者。

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS

SET list=test1 test2 test3

FOR %%a IN (%list%) DO (
    SET variable=%%a
    ECHO %%a
    ECHO -%variable%-
)

我希望输出为

test1
-test1-
test2
-test2-
test3
-test3-

但实际上是

test1
-test3-
test2
-test3-
test3
-test3-

我做错了什么?

1 个答案:

答案 0 :(得分:1)

实际预期输出

test1
--
test2
--
test3
--

我会惊讶地得到别的东西;我绝对无法重现你的输出。

当读取( ... )构造时,变量仅展开一次。如果您希望( ... )中的分配在( ... )中生效,则需要setlocal enabledelayedexpansion并使用{{1 }}。 (或者,有些人更喜欢!variable!子程序,而不是使用call ... ()。