Comando Windows CMD para executar um comando dentro de cada subdiretório?

2

Eu tenho um script em lote que escrevi chamado "joiner.bat". Ele precisa ser executado dentro de cada um dos 730 subdiretórios de uma pasta. O arquivo joiner.bat já foi copiado em cada uma das subpastas, só precisa ser executado em cada uma delas. Eu tentei isso, mas não funciona:

for %f in (*) do joiner.bat %f

Eu tentei esse comando fora de um arquivo em lote apenas no prompt de comando, mas não fez nada. Eu preciso do comando para entrar em uma pasta, executar o comando, voltar para a pasta anterior, para o próximo, executar o comando e assim por diante.

    
por jlacroix82 04.04.2012 / 16:39

1 resposta

3

Isso deve ser feito:

for /d %%a in (*) do (
    cd %%a 
    call joiner.bat
)

crie isso como um arquivo em lotes no diretório principal.

Eu modifiquei o seu arquivo bach dos comentários. Você pode precisar de mais parens e o DelayedExpansion requer o uso de! ao invés de %. Tente isto

setlocal enabledelayedexpansion
for /d %%a in (*) do ( 
    cd %%a 
    copy /b *.xml newfile.xml 
    @echo off 
    SET "CDIR=%~dp0" 
    SET "CDIR=!CDIR:~0,-1!" 
    FOR %%i IN ("!CDIR!") DO (
        SET "PARENTFOLDERNAME=%%~nxi" 
        move newfile.xml "C:\users\lacroixja01\desktop\test\%PARENTFOLDERNAME%.xml" 
        )
)
    
por 04.04.2012 / 16:52