我在批处理文件中有一个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-
我做错了什么?
答案 0 :(得分:1)
实际预期输出
test1
--
test2
--
test3
--
我会惊讶地得到别的东西;我绝对无法重现你的输出。
当读取(
... )
构造时,变量仅展开一次。如果您希望(
... )
中的分配在(
... )
中生效,则需要setlocal enabledelayedexpansion
并使用{{1 }}。 (或者,有些人更喜欢!variable!
子程序,而不是使用call
... (
)。