为什么这个批处理variables即使设置也不会改变?

@echo off SET first=0 FOR %%N IN (hello bye) DO ( SET first=1 echo %first% echo %%N ) 

看起来variables“first”总是0.为什么?

Solutions Collecting From Web of "为什么这个批处理variables即使设置也不会改变?"

使用批处理文件,读取命令时会扩展变量 – 只要for执行即可。 在这一点上,它不再说echo %first% ,它实际上说echo 0 ,因为这是在扩大点的价值。

为了解决这个问题,你需要使用延迟扩展,通过围绕你的变量名! 而不是% – 所以这将是echo !first! 。 这可能需要使用/ V参数启动cmd.exe,或者在批处理文件的开始处使用setlocal enabledelayedexpansion (仅在echo off )。

如果你输入set /? ,你会在输出结尾看到更详细的解释。