用于 /f 处理带空格的文件名

Posted

技术标签:

【中文标题】用于 /f 处理带空格的文件名【英文标题】:For /f processing filename with spaces 【发布时间】:2011-06-27 17:41:27 【问题描述】:

我想对文件的每一行做一些处理。

for /f "delims=" %%i in ("%RF_PROPERTIES%") do (          
   echo %%i
)

我的 RF_PROPERTIES 指向带有空格的文件路径 (c:\program files\Arcot systems\conf\rf.properties)。它抱怨说环境变量 C:\Program Files\Arcot 未定义,即使我提供了引号。如何让它工作?

【问题讨论】:

尝试在循环前设置 RF_PROPERTIES="c:\program files\Arcot systems\conf\rf.properties" 【参考方案1】:

尝试添加usebackq 选项:

for /f "usebackq delims=" %%i in ("%RF_PROPERTIES%") do (          
  echo %%i
)

for /? 输出的解释:

usebackq - 指定 新语义生效, 其中反引号字符串作为 命令和单引号字符串是 文字字符串命令和允许使用 双引号引用文件名 文件集。

【讨论】:

谢谢。我天真地认为“usebackq”只是关于反引号处理,我没有想到它也会影响双引号处理。 (是的,应该对整个 M 进行 RTF 编辑。;)【参考方案2】:

使用 usebackq 是个好主意 - 但实际上你必须使用它们:

for /f "usebackq delims=" %%i in ( `dir "%RF_PROPERTIES%" /s /b` ) do (
  echo %%i
)

【讨论】:

实际上,您没有 - 请阅读我的回答中引用的粗体部分。

以上是关于用于 /f 处理带空格的文件名的主要内容,如果未能解决你的问题,请参考以下文章

PHP/jQuery S3 上传不适用于带空格的文件

scp 复制远程文件 文件带空格 处理

请教shell脚本处理带空格的文件名

如何在url中处理带空格的文件名(Firefox)

如何处理带空格的文件名?

Java程序shell启动脚本文件中路径带空格怎么办?