executa todos os scripts em lote em todos os subdiretórios

0

Eu quero executar todos os x.bat automaticamente em todos os subdiretórios recursivos:

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

Pode ser sequencial ou simultaneamente, não importa.

Eu tenho isso:

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

Mas só corre x.bat para folder1 .

    
por Jmv Jmv 16.01.2015 / 00:16

1 resposta

1

Seu código funciona perfeitamente na minha máquina.

Eu criei um dir de teste com seu test.bat e dois diretórios de teste contendo um x.bat:

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

Esses arquivos contêm:

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

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

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

Agora, execute:

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

Funciona bem para mim. Eu diria que o problema está no x.bat nos subdiretórios. Claro que você não codificou "folder1" em todos eles em algum lugar?

    
por 16.01.2015 / 00:41

Tags