带空格的 FOR /F 不起作用

And*_*res 9 windows batch

FOR /f %%F IN ('dir /b /s "%DeploymentDirectory%\Run.*.dll"') DO ECHO %%F
Run Code Online (Sandbox Code Playgroud)

问题是返回的路径dir有空格,只显示路径的一部分。如何修复以显示完整路径?

afr*_*ier 7

您需要设置用于将行拆分为标记的分隔符,以便不包含空格。类似“delims=?” 紧跟在 /f 之后。只需在文件名中使用非法字符(? 和 * 是很好的候选者)

FOR /F "delims=?" %%F in ('dir /b /s "%Dir%\Run.*.dll"') DO ECHO "%%F"
Run Code Online (Sandbox Code Playgroud)

请记住在实际命令中的 %%F 周围加上双引号,因为扩展变量中也会有空格。

  • 您不需要查找非法字符,您可以将 delim 放在选项字符串的末尾而不使用分隔符:`FOR /F "usebackq delims=" [...]`。 (2认同)
  • 请注意,`?` 和 `*` 都可以与控制台窗口的 Unicode 文件名和 Raster 字体一起出现(这将尽可能将 Unicode 转换为 OEM 代码页,但如果不可能,则插入 `?`)。所以听从培根的建议,不要使用分隔符。 (2认同)

Joe*_*oey 5

为什么你需要在这里迭代dir的输出?简单地使用

for /r %%F in ("%DeploymentDirectory%\Run.*.dll")
Run Code Online (Sandbox Code Playgroud)

不够?