como executar um lote recursivamente

1

Eu tenho uma pasta pai (BIG_Folder) , que contém muitos subpastos (folder1, folder2, folder3 ... ) em cada subpasta um arquivo de lote existe, é sempre o mesmo (x.bat) .

Eu quero executar todos os morcegos, recursivamente de outro morcego.

BIG_Folder (pasta1 (x.bat), pasta2 (x.bat), pasta3 (x.bat))

A pasta1, pasta2, pasta3 não é criada, criada por um morcego anterior. Por essa razão, procuro fazer recursivamente todas as subpastas contidas em BIG_Folder.

Código anexado conforme copio os bastões para pastas.

for /D %%f in ("C:BIG_Folder\*") do copy "C:.bat" "%%f\" 

Qualquer ajuda é apreciada

    
por Jmv Jmv 18.12.2014 / 22:44

2 respostas

1

Obrigado pela pronta resposta, peço desculpas pela confusão

Vou tentar ser breve. O objetivo é empacotar o vídeo e o áudio em um arquivo. Isso significa que em cada pasta, Pasta1, Pasta2, Pasta3 , possui 3 arquivos, 1 vídeo (VIDEO01 ) e 2 áudio (AUDIO01) (AUDIO02) . e depois de executar o morcego (3.BAT) tornar-se um único arquivo.

esta é a precisão da instrução de embalagem

bmxtranswrap -p -t op1a --ps-avcihead -o "OUT_SingleFile" %VIDEO01% %AUDIO01% %AUDIO02%   

E esta é a instrução completa de 3.bat

   @echo off 

DIR *.mxf /b /o > clips.txt

for /F "tokens=*" %%X in (clips.txt) do call :variables "%%X" 
goto fin 

:variables 
set /a contador=contador + 1 
::
if "%contador%"=="1" set linea1=%~1 
if "%contador%"=="2" set linea2=%~1 
if "%contador%"=="3" set linea3=%~1 
if "%contador%"=="4" set linea4=%~1 
if "%contador%"=="5" set linea5=%~1 

goto:eof 

:fin 

echo %linea1% 
echo %linea2% 
echo %linea3% 
echo %linea4% 
echo %linea5% 

bmxtranswrap -p -t op1a --ps-avcihead -o "OUT_%linea1%_.mxf" %linea1%  %linea2% %linea3% %linea4% %linea5%    

pause

Por esse motivo, o bastão deve estar em cada pasta. Cada pasta tem o mesmo bat (3.bat), mas diferentes conteúdos de vídeo e áudio. E o que eu quero é executar todos os bat (3.bat) no momento.

Uma coisa mais 1,2,3 pastas são criadas por outro morcego x.bat , que varre um diretório e organiza vídeos e áudios que combinam com caracteres.

    @echo off
FOR /R "C:\MATERIAL" %%a IN (*.mxf*) DO set ruta=%%a&set datos=%%~nxa&call :separar
pause
goto:eof
:separar
set copia=%datos:~0,4%
if not exist "C:\MATERIAL\CARPETAS\%copia%" MD "C:\MATERIAL\CARPETAS\%copia%"
set archivo=%datos%

if %archivo:~0,4% EQU %copia% copy "%ruta%" "C:\MATERIAL\CARPETAS\%copia%" 

echo %ruta%

goto:eof

call exe.bat

pause

Existe um segundo bat (2.bat) que 3.bat copia para cada pasta individual criada por x.bat

@echo off
for /D %%f in ("C:MATERIAL\CARPETAS\*") do copy "C:.bat" "%%f\"
pause

Qualquer ajuda é apreciada

Obrigado por tudo

    
por 22.12.2014 / 18:47
0

A execução dos scripts em lote é tão fácil (praticamente o mesmo) quanto copiá-los: em primeiro lugar:

for /d %%F in ("c:BIG_Folder\*") do call "%%F.bat"

Mas eu suspeito que você esteja fazendo a pergunta errada. Não deve haver nenhuma razão pela qual você deve ter uma cópia do arquivo de lote em cada pasta. Você deve ter um único arquivo de lote em um local e o script deve funcionar em qualquer pasta de sua preferência.

Não sabendo o que seu arquivo de lote deve fazer, não posso sugerir qual deveria ser sua pergunta, muito menos qual seria a resposta.

    
por 18.12.2014 / 23:10