uruchom wszystkie skrypty wsadowe we wszystkich podkatalogach


0

Chcę uruchomić wszystko x.batautomatycznie we wszystkich rekursywnych podkatalogach:

C:\test
|   
+---folder1
|      x.bat
|       
+---folder2
|      x.bat
|       
+---folder3
.      x.bat
. 
.----foldern
       x.bat

Może być sekwencyjnie lub jednocześnie, to nie ma znaczenia.

Mam to:

@echo off
for /r /d %%x in ("*") do (
    pushd "%%x"    
    call "x.bat"
    popd
)
pause

Ale działa tylko x.batna folder1.


Czy możesz użyć innej powłoki, takiej jak bash?
ctrl-alt-delor

Odpowiedzi:


1

Twój kod działa idealnie na moim komputerze.

Stworzyłem testowy katalog z twoim test.bat i dwoma testowymi katalogami zawierającymi x.bat:

C:\tmp\865348>dir /s /b
   C:\tmp\865348\f1
   C:\tmp\865348\f2
   C:\tmp\865348\test.bat
   C:\tmp\865348\f1\x.bat
   C:\tmp\865348\f2\x.bat

Te pliki zawierają:

C:\tmp\865348>type test.bat
   @echo off
   for /r /d %%x in ("*") do (
       pushd "%%x"
       call "x.bat"
       popd
   )
   pause

C:\tmp\865348>type f1\x.bat
   echo "I'm f1"

C:\tmp\865348>type f2\x.bat
   echo "I'm f2"

Teraz, aby go uruchomić:

C:\tmp\865348>test.bat
   "I'm f1"
   "I'm f2"
   Press any key to continue . . .

Działa dla mnie dobrze. Powiedziałbym, że problem tkwi w x.bat w podkatalogach. Na pewno nie zapisałeś gdzieś w folderze „folder1”?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.