0

可能重复:
如何编写bat文件来处理所有文件包括子目录,并将它们以相同的目录结构输出到另一个目录?

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

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

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

4

2 回答 2

2

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

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

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

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

你可以从命令行运行上面的,但是你只使用一个 %

for /r %F in (*.dat) do process.exe -8 "%F"
于 2012-07-29T14:34:11.003 回答
1

批量变量是一个字母

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

例如这个批处理类型每个*.dat文件在批处理目录和子目录中的内容

for /r "%~dp0" %%v in (*.dat) do type "%%v"
于 2012-07-29T14:34:00.250 回答