2013-02-21 55 views
0

我试图访问一个文件并阅读其内容在嵌套循环,但内环无法访问文件。(批次)读取文件批量循环

下面的代码(整个脚本的一小部分):

for %%b in (!directory!) do (
    echo File used: %%b 
    for /f "delims= " %%c in (%%b) do (
     echo %%c 
    ) 
) 

的问题是:

如果 “%% b” 等于 “C:\ Documents和Settings \测试\ test.txt的”,内循环将尝试访问“C:\ Documents”(由于空间)。如果我在“%% b”周围放置双引号,它会将其解析为字符串而不是文件本身。

我该如何处理?该文件是动态的,我不知道它的名字......

感谢

回答

2

你需要使用FOR/F读取与在名称包含空格的文件时使用usebackq选项。 USEBACKQ改变了各种引用的语义。通常情况下,没有引号表示文件,双引号表示字符串,单引号表示命令。 USEBACKQ选项修改这样的内容,即引号或双引号表示文件,单引号表示字符串,后引号表示命令。从命令提示符输入HELP FOR以获取更多信息。

for %%b in (!directory!) do (
    echo File used: %%b 
    for /f "usebackq delims= " %%c in ("%%b") do (
     echo %%c 
    ) 
) 
+0

它完美的工作,谢谢!我不知道这个选项会帮助我:) – 2013-02-22 08:05:42