0

我有这个批处理文件:

for /L %%n in (1,1,10) do (

set a = %%n
echo %%n
echo %a%
)

当我们%%n正确运行时显示为 1,2,3,... 10

a总是显示为 10 : 10,10,10,...,10

是什么原因?

4

1 回答 1

2

您需要使用延迟扩展。在 FOR 或 IF 中,变量在命令执行之前而不是在命令执行期间“扩展”。(扩展=变量被其值替换)

为了改变变量的值并在同一个循环中使用它,你应该使用延迟表达式。

您必须SETLOCAL ENABLEDELAYEDEXPANSION在代码的开头编写,并且应该延迟扩展的变量应该用感叹号而不是百分号包围。

所以echo %a%成为echo !a!

编辑

此外,您set a = %%n是无效的,因为您影响了变量“a”而不是“a”处的 n 值。

你必须写set a=%%n(等号前没有空格)

于 2013-09-05T15:20:21.913 回答