批处理目录中的所有文件

时间:2011-04-12 21:48:02

标签: windows batch-file cmd

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

例如:

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

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

用户名和密码永远不会改变,但是15个不同的xml文件的文件名不同 - 很快就会有更多。

文件将始终位于同一文件夹中。我可以编写一些可以处理此目录中每个文件的内容,而不是以15-20个作业(每个文件一个)结束。要么等到一个在下一个之前完成,要么我可以在开始下一个文件之前添加3分钟的睡眠。

3 个答案:

答案 0 :(得分:30)

pushd C:\test\utils
for %%F in (F:\DB\*.xml) do (
   admin import-xml "-Dimport.file=%%~dpnxF" -Dadmin.db.password=test123
)
popd

%%~dpnxF扩展为 d p ath,基本 n ame和e x 当前文件的张力。

如果您打算在该循环中设置使用环境变量(%foo%),请在遇到麻烦之前先阅读help set

答案 1 :(得分:7)

您可以使用for命令。在批处理文件中有这样的东西:

for %%f in (*.xml) do call myotherbatch.bat %%f

假设您运行的admin命令在作业完成之前没有返回,上面的循环将按顺序处理它们。

如果在提示符处运行命令(而不是在批处理文件中),则只使用一个%。

答案 2 :(得分:0)

for file in f:\DB\*
do
   admin import-xml -Dimport.file="$file" -Dadmin.db.password=test123
done