现在我有一个批处理作业,我写了调用另一个文件,并传递可执行文件需要运行的variables(密码和文件名)。
例如:
> cd f:\test\utils > admin import-xml -Dimport.file=f:\DB\file1.xml -Dadmin.db.password=test123
我写了一个这样做的工作,但发现会有多个文件。
用户名和密码永远不会改变,但文件名不同,像15个不同的XML文件 – 也许更快即将到来。
这些文件将始终位于相同的文件夹中。 我可以写一些将处理位于这个目录中的每个文件的东西,而不是像15-20个作业(每个文件一个)。 等待下一个完成之前,或者我可以添加一个3分钟的睡眠,然后开始下一个文件。
pushd C:\test\utils for %%F in (F:\DB\*.xml) do ( admin import-xml "-Dimport.file=%%~dpnxF" -Dadmin.db.password=test123 ) popd
%%~dpnxF
扩展到当前文件的%%~dpnxF
。
如果您打算在该循环中设置并使用环境变量( %foo%
),请在出现问题前先阅读help set
。
你可以使用for
命令。 在批处理文件中是这样的:
for %%f in (*.xml) do call myotherbatch.bat %%f
假设您正在运行的admin
命令在作业完成之前不会返回,上面的循环将按顺序处理它们。
如果在提示符下(而不是在批处理文件中)运行该命令,则只能使用一个%。
for file in f:\DB\* do admin import-xml -Dimport.file="$file" -Dadmin.db.password=test123 done