1

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

例子:

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

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

请帮帮我。

4

2 回答 2

4

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

for /l %%G in (1, 1, %myvariable%) do command
于 2012-09-06T18:03:05.910 回答
2

Mark 发现 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 命令中。我无法判断这是否是您的问题,因为您没有提供足够的上下文。

于 2012-09-06T18:30:26.823 回答