批处理文件for循环,在dir名称中包含空格

时间:2011-04-05 13:57:52

标签: windows batch-file cmd

我该如何修改:

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

当路径包含空格时工作?

例如,如果从

运行
c:\my folder with spaces

它会回应:

c:\my

由于

4 个答案:

答案 0 :(得分:77)

您需要使用:

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

这会覆盖默认分隔符,即TAB和SPACE

答案 1 :(得分:30)

我通过在IN子句

中添加“type”并在路径周围放置双引号来解决这个问题
FOR /F %%A IN ('type "c:\A Path With Spaces\A File.txt"') DO (
    ECHO %%A
)

This article让我想到在IN子句中使用“type”。

答案 2 :(得分:6)

如果您不想处理“引号”,可以使用%~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

答案 3 :(得分:0)

问题是字符串中有一个通配符被解释为文件名。对于带空格的字符串,您还需要双引号。我不确定是否有办法逃避通配符。

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