如何在windows命令shell中转义?

时间:2012-04-05 10:20:11

标签: windows for-loop escaping command-line-arguments command-prompt

我在c:\Program Files目录中有一个名为tmp.txt

的文件

对于tmp.txt中的每一行,我想执行一个命令。

我正在尝试使用命令提示符for循环,但它无法找到tmp.txt。请注意,我要从c:\Program Files目录中运行此命令。

以下是我的尝试方式:

C:\>for /F %i in ("c:\Program Files\tmp.txt") do echo "%i"

输出是:

C:\>echo "c:\Program"
"c:\Program"

这意味着for正在考虑将"c:\Program"作为参数并将其传递给do

如果我将文件放入c:\,并运行for循环as-

C:\>for /F %i in (c:\tmp.txt) do echo "%i"

它运作得很好

所以我的问题是 - 如何将完整路径传递给for循环,以便for将其视为文件

1 个答案:

答案 0 :(得分:2)

使用usebackq选项for /f

for /f "usebackq" %i in (...)

这会改变各种引号字符的语义,如帮助所示:

usebackq        - specifies that the new semantics are in force,
                  where a back quoted string is executed as a
                  command and a single quoted string is a
                  literal string command and allows the use of
                  double quotes to quote file names in
                  file-set.