循环遍历所有子文件夹并执行bat文件?

时间:2013-04-21 05:31:33

标签: loops batch-file call directory

我正在尝试在父目录中创建一个bat文件,该文件循环遍历子文件夹并运行名为callshow.bat的bat文件。

这是我到目前为止所得到的。我不是很擅长这些,所以任何帮助都会很棒!

for /r %%f in (*) do Call callshow.bat

这是文件夹Structure:

Example:
Parent:(Where new Bat file will be)
Sub Folder 1\folder1\callshow.bat
Sub Folder 2\folder2\callshow.bat
Sub Folder 3\folder3\callshow.bat
Sub Folder 4\folder4\callshow.bat
Sub Folder 5\folder5\callshow.bat
etc.......

3 个答案:

答案 0 :(得分:7)

@echo off
for /r /d %%f in (*) do pushd "%%f" & Call "callshow.bat" & popd

答案 1 :(得分:3)

文件夹结构使它更清晰,试试这个:

for /d /r %%i in (*) do if exist "%%i\callshow.bat" call "%%i\callshow.bat"

编辑:这可能会有效:

for /r %%f in (callshow.b?t) do call "%%f"

要从for /r获得一致的结果,需要使用通配符,因此b?t即使它符合callshow.bitcallshow.bbt等。

编辑2:如果callshow.bat未引用其所在文件夹中的任何文件,或使用{{1},则可以使用此方法(编辑后的:)引用它们。如果%~dp0需要使用位于callshow.bat批处理文件所在的文件夹中的文件,请使用此方法。否则,可以使用foxidrive的方法。

答案 2 :(得分:2)

C:\测试\ batfiletorun.bat C:\测试\文件夹1 \ C:\测试\文件夹2 \

在folder1和folder2中运行batfiletorun.bat:

从命令提示符:

for / r / d%f in(*)do pushd“%f”&调用C:\ test \ batfiletorun.bat& POPD

或者,使用.bat文件运行batfiletorun.bat只会有%%而不是%,看起来如下所示,runbatfileinsubdirectories.bat包含以下行:

for / r / d %% f in(*)do pushd“%% f”&调用C:\ test \ batfiletorun.bat& POPD

现在您的输入如下所示: C:\测试\ batfiletorun.bat C:\测试\ runbatfileinsubdirectories.bat C:\测试\文件夹1 \ C:\测试\文件夹2 \

希望这可以简化那里的人的事情。我用它在子目录中运行重命名bat文件。