在Windows .bat文件中使用通配符来查找两个文件并同时在两个文件上运行命令

时间:2018-01-10 19:11:15

标签: windows batch-file

我想在两个文件上运行一个exe,我需要使用通配符来获取名称。

myprogram.exe * keyword * .txt W * .txt

将该命令放在.bat文件中只会导致文件名在名称中使用字面*。

1 个答案:

答案 0 :(得分:0)

我在测试目录中创建了以下文件:

  • 1keyword2.txt
  • 1keyword3.txt
  • W1.txt
  • W2.txt

写下以下测试脚本:

@setlocal ENABLEEXTENSIONS
@set prompt=$G

@for %%a in (*keyword*.txt) do @call :DoIt %%a
@exit /b 0

:DoIt
@for %%A in (W*.txt) do @echo myprogram.exe %1 %%A
@exit /b 0

产生以下结果:

> test
myprogram.exe 1keyword2.txt W1.txt
myprogram.exe 1keyword2.txt W2.txt
myprogram.exe 1keyword3.txt W1.txt
myprogram.exe 1keyword3.txt W2.txt

第一个for循环,循环遍历当前目录中的所有*keyword*.txt文件并调用:DoIt对每个结果值,然后:DoIt遍历当前目录中的每个W*.txt文件,产生每个*keyword*.txtW*.txt的组合。只需删除echo命令,然后将myprogram.exe更改为您的程序名称,它就可以使用。

注意:我总是在for/do循环体内调用一个子程序进行非平凡的工作。它避免了许多涉及多个行代码块(在parens中)的潜在陷阱以及变量的延迟/立即扩展问题。在调试问题时使生活更轻松。