windows - 在 for 循环中初始化的批处理文件变量

标签 windows batch-file

我有一个批处理文件,它通过 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/

相关文章:

windows - 更改线程 session ID

c# - C# 3.0 中 Windows 本地用户帐户的身份验证

python - 为 Scrapy 安装依赖包

windows - 如何添加管理员密码要求以编辑此批处理文件?

sql - 如何在批处理文件中将局部变量设置为sql查询的结果?

batch-file - 如何使用单个bat文件传递动态参数来运行一个exe

c - 在 C 中使用 system()、fgets 和 sprintf 将文本附加到文件时出现问题

c++ - 可执行文件在 Wine 上的运行速度比 Windows 快——为什么?

batch-file - 通过拖放到批处理文件上运行命令

powershell - 如何使用保留名称删除此类文件?