用于 /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 处理带空格的文件名的主要内容,如果未能解决你的问题,请参考以下文章