在嵌套批处理循环中转义括号?

时间:2013-06-21 21:43:38

标签: windows command-line batch-file command-prompt

我有一个包含未知数量的.txt文件的文件夹,其名称如下:

todo.txt
todo (1).txt
todo (2).txt
todo (3).txt

我正在运行此命令来遍历文件并在文件中的每一行上打印文本:for /r %f in (test\*.txt) do (for /f %p in (%f) do echo %p)

/ r正确返回文件名,/ f将输出todo.txt中的每一行文本,但是当它到达todo (1).txt时,它会执行命令for /f %p in (C:\test\todo (1).txt) do echo %p并出错The system cannot find the file C:\test\todo.

在这种情况下你怎么逃脱括号?

2 个答案:

答案 0 :(得分:3)

使用usebackq选项允许您双引号文件名

for /r %f in (test\*.txt) do (for /f "usebackq" %p in ("%f") do echo %p)

答案 1 :(得分:1)

在引号之间包围文件名:

"C:\test\todo (1).txt"

实际上问题是空格,而不是括号。