【问题标题】:For /f processing filename with spaces用于 /f 处理带空格的文件名
【发布时间】: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"

标签: file batch-file for-loop filenames


【解决方案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
)

【讨论】:

  • 实际上,您没有 - 请阅读我的回答中引用的粗体部分。
猜你喜欢
  • 2015-03-08
  • 2023-03-22
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多