我没有成功编写一个合适的批处理文件,并希望得到一些帮助。
假设我在D:\ Test \中有一个exe,称为script.exe。 要执行此script.exe,它需要一个.bin文件的附加参数(例如bin01.bin,bin02.bin)。
因此它就像:script.exe -i bin01.bin,script.exe -i bin01
我希望脚本能够使用所有子文件夹中的所有.bin文件执行
d:\测试\ script.exe
d:\测试\ FOLDER01 \ bin01.bin
d:\测试\ FOLDER01 \ bin02.bin
d:\测试\ Folder02 \ bin01.bin
D:\ Test \ Folder03 \ bin01.bin
答案 0 :(得分:3)
从命令提示符窗口直接执行:
for /R "D:\Test" %I in (*.bin) do @D:\Test\script.exe -i "%I"
在批处理文件中使用相同的命令行:
@for /R "D:\Test" %%I in (*.bin) do @D:\Test\script.exe -i "%%I"
命令 FOR 搜索目录D:\Test
中的递归以及与通配符模式*.bin
匹配的文件的所有子目录。
为每个找到的文件的名称分配了区分大小写的循环变量I
的完整路径。
FOR 为每个文件执行带有第一个参数D:\Test\script.exe
的可执行文件-i
,第二个参数是找到的文件的名称,其中完整路径用双引号括起来适用于任何文件* .bin文件名,即使包含空格或其中一个字符的文件名:&()[]{}^=;!'+,`~
。
@
在整个 FOR 命令行的开头只是告诉Windows命令解释器cmd.exe
在执行之前不要在执行之前回显命令行,而是默认执行到控制台窗口。 / p>
@
开头的
D:\Test\script.exe
可以避免在循环的每次迭代中执行此命令到控制台的输出。
大多数情况下,执行前命令行的回显在批处理文件的开头被@echo off
关闭,如下所示。
@echo off
for /R "D:\Test" %%I in (*.bin) do D:\Test\script.exe -i "%%I"
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
for /?