批处理目录中的所有文件

现在我有一个批处理作业,我写了调用另一个文件,并传递可执行文件需要运行的variables(密码和文件名)。

例如:

> cd f:\test\utils > admin import-xml -Dimport.file=f:\DB\file1.xml -Dadmin.db.password=test123 

我写了一个这样做的工作,但发现会有多个文件。

用户名和密码永远不会改变,但文件名不同,像15个不同的XML文件 – 也许更快即将到来。

这些文件将始终位于相同的文件夹中。 我可以写一些将处理位于这个目录中的每个文件的东西,而不是像15-20个作业(每个文件一个)。 等待下一个完成之前,或者我可以添加一个3分钟的睡眠,然后开始下一个文件。

Solutions Collecting From Web of "批处理目录中的所有文件"

 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