batch file循环与空间在目录名称

我如何修改这个:

for /f %%a IN ('dir /b /s build\release\*.dll') do echo "%%a" 

当path包含空格时工作?

例如,如果这是从运行

 c:\my folder with spaces 

它会回应:

 c:\my 

谢谢

你需要使用:

for /f "delims=" %%a IN ('dir /b /s build\release\*.dll') do echo "%%a"

这覆盖了TAB和SPACE的默认分隔符

我通过预先input“type”并在IN子句中放置双引号来解决这个问题

 FOR /F %%A IN ('type "c:\A Path With Spaces\A File.txt"') DO ( ECHO %%A ) 

这篇文章给了我在IN子句中使用“type”的想法。

如果您不想处理“引号”,可以使用%〜dpnx []中的“s”开关…这将输出易于使用的短文件名。

从命令行…

 for /f "delims=" %f IN ('dir /b /s "C:\Program Files\*.dll"') do echo %~sdpnxf 

在一个.CMD / .BAT文件中,你需要“跳过”[%],例如,双击[%%]

 for /f "delims=" %%f IN ('dir /b /s "C:\Program Files\*.dll"') do echo %%~sdpnxf