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

And*_*ock 57 windows cmd batch-file

我该如何修改:

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

当路径包含空格时工作?

例如,如果从中运行

c:\my folder with spaces
Run Code Online (Sandbox Code Playgroud)

它会回应:

c:\my
Run Code Online (Sandbox Code Playgroud)

谢谢

Jan*_*yka 83

你需要使用:

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

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


Jas*_*son 30

我通过在"IN"子句中添加"type"并在路径周围放置双引号来解决这个问题

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

本文给了我在IN子句中使用"type"的想法.


小智 6

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

从命令行......

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

在.CMD/.BAT文件中你需要"逃避"[%],例如,双倍[%%]

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