处理每个子目录中的每个文件

时间:2012-07-29 14:26:37

标签: windows batch-file windows-7-x64

  

可能重复:
  how to write bat file to process all files include sub directory, and output them with the same directory structure to another directory?

有几个问题询问如何使用批处理脚本进入子控制器,但大多数时候他们只是列出文件或做一些其他非常复杂的东西,在这种情况下我不需要。 我有CLI程序,我想处理当前目录的所有子目录中的每个* .dat文件。它不必包括家庭目录。我很确定这可以用/ r以简单的方式完成,但我的所有试验都以错误结束。我试过的例子:

for /r path %%var in (*.dat) do process.exe -8 %%var

我得到的只是一个语法错误,我不知道为什么。

2 个答案:

答案 0 :(得分:2)

您的问题是您的FOR变量名称 - 它们必须是单个字符,并且区分大小写。

当用作程序的参数时,您也应引用该变量,因为文件名可能包含空格或特殊字符。

如果要递归处理当前目录中的所有.dat文件,则/ R选项不需要路径说明符。

for /r %%F in (*.dat) do process.exe -8 "%%F"

您可以从命令行运行上述内容,但之后只能使用一个%

for /r %F in (*.dat) do process.exe -8 "%F"

答案 1 :(得分:1)

批量变量是一个字母

for /r path %%v in (*.dat) do process.exe -8 %%v

例如,批处理目录和子目录

中的每个*.dat文件的批处理类型内容
for /r "%~dp0" %%v in (*.dat) do type "%%v"