Batch file 批处理文件&x27;对于';循环-多行
为什么以下行在批处理文件中工作Batch file 批处理文件&x27;对于';循环-多行,batch-file,for-loop,Batch File,For Loop,为什么以下行在批处理文件中工作 for %%a in ("C:\Test\*.txt") do set FileName=%%~a echo Filename is: %FileName% 但这些不会吗 for %%a in ("C:\Test\*.txt") do ( set FileName=%%~a echo Filename is: %FileName% ) 就像“a”变量没有保留在第二行上一样。这是为什么?如何使用第二个示例中“a”的内容?这是因为括
for %%a in ("C:\Test\*.txt") do set FileName=%%~a
echo Filename is: %FileName%
但这些不会吗
for %%a in ("C:\Test\*.txt") do (
set FileName=%%~a
echo Filename is: %FileName%
)
就像“a”变量没有保留在第二行上一样。这是为什么?如何使用第二个示例中“a”的内容?这是因为括号之间的所有内容都作为一行加载。因此
%FileName%
在设置之前(在运行时)会先展开(在加载时)。如果需要使用第二种格式,则需要启用延迟扩展。如果文件名包含,则您将遇到困难代码>。如果文件名中没有括号,这将起作用
setlocal enabledelayedexpansion
for %%a in ("C:\Test\*.txt") do (
set FileName=%%~a
echo Filename is: !FileName!
)
endlocal