我有一个批处理文件,它通过 for 循环内的 SET 为磁盘上的一组文件初始化变量:
for %%f in (%MYTARGETDIR%\*config.xml) do (
SET TMPFILE=%%F.tmp
echo In loop %TMPFILE%
)
echo End loop %TMPFILE%
当我在一个全新的命令 shell(没有定义 TMPFILE)中运行它时,In loop echo 是空的,但结束循环 echo 不是。
当我第二次运行时,它已经设置,并输出它的值,忽略设置直到循环关闭。
为什么会这样,解决方法是什么?
最佳答案
作为记录,更正后的脚本如下所示:
setlocal ENABLEDELAYEDEXPANSION
for %%f in (%MYTARGETDIR%\*config.xml) do (
SET TMPFILE=%%F.tmp
echo In loop !TMPFILE!
)
echo End loop %TMPFILE%
感谢克里斯的帮助。
关于windows - 在 for 循环中初始化的批处理文件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/691047/