3 回答

TA贡献1853条经验 获得超18个赞
记录下来,更正后的脚本如下所示:
setlocal ENABLEDELAYEDEXPANSION
for %%f in (%MYTARGETDIR%\*config.xml) do (
SET TMPFILE=%%F.tmp
echo In loop !TMPFILE!
)
echo End loop %TMPFILE%
谢谢克里斯的帮助。

TA贡献1876条经验 获得超7个赞
这是因为读取命令时会替换环境变量。对于以下命令:
for %%f in (%mytargetdir%\*config.xml) do (
set tmpfile=%%f.tmp
echo In loop %tmpfile%
)
for在执行之前,将读取并替换整个命令(从到右括号)。
您需要使用延迟扩展,例如:
@echo off
setlocal enableextensions enabledelayedexpansion
set full=/u01/users/pax
:loop1
if not "!full:~-1!" == "/" (
set full2=!full:~-1!!full2!
set full=!full:~,-1!
goto :loop1
)
echo !full!
endlocal
启用延迟扩展后,"%"标记仍然像以前一样工作,但是您可以使用"!"标记来执行延迟扩展。
- 3 回答
- 0 关注
- 484 浏览
添加回答
举报