Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件&x27;对于';循环-多行_Batch File_For Loop - Fatal编程技术网

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