我想在 for loop IN 列表中放置一个变量值。myvariable 是从用户输入中获得的。
例子:
for /L %%G IN (1 1 %myvariable%) DO command
如果我使用这种语法,则永远不会执行循环。是否可以在运行时将 IN 列表分配给 for 循环?
请帮帮我。
我想在 for loop IN 列表中放置一个变量值。myvariable 是从用户输入中获得的。
例子:
for /L %%G IN (1 1 %myvariable%) DO command
如果我使用这种语法,则永远不会执行循环。是否可以在运行时将 IN 列表分配给 for 循环?
请帮帮我。
你的想法是对的,但你的语法是错误的。它应该是:
for /l %%G in (1, 1, %myvariable%) do command
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 命令中。我无法判断这是否是您的问题,因为您没有提供足够的上下文。