Я хочу запустить все x.bat автоматически во всех рекурсивных подкаталогах:

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

Может быть последовательно или одновременно, это не важно.

У меня есть это:

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

Но он запускает только x.bat для folder1 .

1 ответ1

1

Ваш код отлично работает на моей машине.

Я создал тестовый каталог с вашим test.bat и двумя тестовыми каталогами, содержащими 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

Эти файлы содержат:

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"

Теперь, чтобы запустить это:

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

У меня отлично работает. Я бы сказал, что проблема в x.bat в подкаталогах. Уверены, что вы не жестко закодировали "folder1" во всех них где-нибудь?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .