2

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

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

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

这是文件夹结构:

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.......
4

3 回答 3

7
@echo off
for /r /d %%f in (*) do pushd "%%f" & Call "callshow.bat" & popd
于 2013-04-21T05:37:42.933 回答
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如果不引用它所在文件夹中的任何文件,或者用于%~dp0引用它们,则可以使用此方法(编辑后的方法:) 。使用此方法尤其是如果callshow.bat需要使用位于calling 批处理文件所在文件夹中的文件。否则,可以使用 foxidrive 的方法。

于 2013-04-21T07:29:32.733 回答
2

C:\test\batfiletorun.bat C:\test\folder1\ C:\test\folder2\

在文件夹 1 和文件夹 2 中运行 batfiletorun.bat:

从命令提示符:

for /r /d %f in (*) do pushd "%f" & Call C:\test\batfiletorun.bat & popd

或者,使用 .bat 文件运行 batfiletorun.bat 将只有 %% 而不是 % 并且看起来像下面的 runbatfileinsubdirectories.bat 包含以下行:

for /r /d %%f in (*) do pushd "%%f" & Call C:\test\batfiletorun.bat & popd

现在您的输入如下所示: C:\test\batfiletorun.bat C:\test\runbatfileinsubdirectories.bat C:\test\folder1\ C:\test\folder2\

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

于 2015-03-04T19:51:16.790 回答