我有一个文件夹,其中包含一个未知数的.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.
在这种情况下如何避免括号?
使用usebackq
选项来允许你双引号文件名
for /r %f in (test\*.txt) do (for /f "usebackq" %p in ("%f") do echo %p)
在引号之间围绕文件名:
"C:\test\todo (1).txt"
其实问题是白色空间,而不是括号。