0

我在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循环为-

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

它工作得很好

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

4

1 回答 1

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.
于 2012-04-05T10:24:36.147 回答