我想在两个文件上运行一个exe,我需要使用通配符来获取名称。
myprogram.exe * keyword * .txt W * .txt
将该命令放在.bat文件中只会导致文件名在名称中使用字面*。
答案 0 :(得分:0)
我在测试目录中创建了以下文件:
写下以下测试脚本:
@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*.txt
和W*.txt
的组合。只需删除echo
命令,然后将myprogram.exe
更改为您的程序名称,它就可以使用。
注意:我总是在for/do
循环体内调用一个子程序进行非平凡的工作。它避免了许多涉及多个行代码块(在parens中)的潜在陷阱以及变量的延迟/立即扩展问题。在调试问题时使生活更轻松。