我该如何修改:
for /f %%a IN ('dir /b /s build\release\*.dll') do echo "%%a"
当路径包含空格时工作?
例如,如果从
运行c:\my folder with spaces
它会回应:
c:\my
由于
答案 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"