2013-04-21 224 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文件。

相關問題