2013-04-21 180 views
2

我想在父目录中有一个bat文件,它通过子文件夹循环并运行一个名为callshow.bat的bat文件。循环遍历所有子文件夹并执行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....... 

回答

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

嗯,这似乎并不适合我,但感谢您的帮助。将“c:\ bat files \ callshow.bat”中的 – 2013-04-21 05:46:39

+0

放入@echo%cd%然后再试一下。如果没有子目录,那么它将不会执行任何操作。 – foxidrive 2013-04-21 06:06:11

+0

是的,也没有工作。我添加了文件夹结构,也许这会有所帮助。 – 2013-04-21 07:01:01

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需要使用位于call ing批处理文件所在文件夹中的文件,请使用此方法。否则,可以使用foxidrive的方法。

+0

谢谢!@ user2033427 – 2013-04-21 07:49:32

+0

@IdeaBak如果有效,请注意:) – user2033427 2013-04-21 08:38:31

+0

您使用的方法存在的一个问题是,工作目录总是相同的 - 您运行批处理的文件夹,而不是呼叫显示的文件夹.bat驻留。 – foxidrive 2013-04-21 08:59:36

2

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

要运行的folder1和文件夹2 batfiletorun.bat:

从命令提示:

用于/ R/d在%F(*)做的pushd “%F” &调用C:\测试\ batfiletorun.bat & POPD

或者,batfiletorun.bat使用.bat文件运行只会有%%代替%,看起来像runbatfileinsubdirectories.bat包含以下行:

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

现在在哪里你投入这个样子: C:\测试\ batfiletorun.bat C:\测试\ runbatfileinsubdirectories.bat C:\测试\ \ ç的folder1:\测试\文件夹2 \

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

相关问题