如何在For / L Loop IN列表中使用变量(批处理文件编程)

时间:2012-09-06 18:00:29

标签: for-loop batch-file

我想在for循环IN列表中放置一个变量值。 myvariable是从用户输入中获得的。

示例:

for /L %%G IN (1 1 %myvariable%) DO command

如果我使用这种语法,则永远不会执行循环。是否可以在运行时将IN列表分配给for循环?

请帮帮我。

2 个答案:

答案 0 :(得分:3)

你的想法是对的,但你的语法错了。它应该是:

for /l %%G in (1, 1, %myvariable%) do command

答案 1 :(得分:2)

马克已经确定了IN和()之间缺少的空格,但是无法判断这是您的实际代码还是创建问题时的错字。

另一种可能性是您的变量在同一代码中设置,以后扩展该值。以下代码将失败:

(
  set /p "myvariable=Enter a value: "
  echo myvariable=%myvariable%
)

上述失败的原因是在解析语句时发生%扩展,并且括号内的整个块被视为单个语句。因此它扩展到执行SET / P之前存在的值。

如果您想要运行时存在的值,则需要使用延迟扩展

setlocal enableDelayedExpansion
(
  set /p "myvariable=Enter a value: "
  echo myvariable=!myvariable!
)

IF和FOR命令经常发生此类问题。我无法判断这是否是您的问题,因为您没有提供足够的背景信息。