Como eu extraio todos os arquivos nos subdiretórios desta pasta?

17

Como faço para extrair vários arquivos contidos em subdiretórios em uma pasta, retornando os resultados para as pastas onde estão os arquivos.

    
por HopelessN00b 14.05.2009 / 08:31

4 respostas

20

Primeiramente, instale o 7-zip .

Crie um arquivo bat na raiz do diretório que contém muitos subdiretórios com arquivos dentro dele. Em seguida, cole o seguinte em:

FOR /D /r %%F in ("*") DO (
    pushd %CD%
    cd %%F
        FOR %%X in (*.rar *.zip) DO (
            "C:\Program Files-zipz.exe" x "%%X"
        )
    popd
)

Inicie o morcego e todos os / zips do rar serão extraídos para a pasta em que estão contidos.

Como isso funciona?

FOR /D /r %%F in ("*") DO (

For loop to loop through all folders in the current directory, and put the path into a variable %%F.

pushd %CD%

Put the current directory that we are in into memory.

cd %%F

Set the folder from variable %%F as the current directory.

FOR %%X in (*.rar *.zip) DO (

For all the rar and zip files in the current folder, do:

"C:\Program Files-zipz.exe" x "%%X"

Run 7-zip on the files. Quotes are needed around %%X because some file names have spaces in them.

popd

Return to the previous directory that we previously stored in the memory.

Espero que isso seja útil para alguém.

    
por 09.09.2014 / 18:03
3

Eu tive problema ao executar o script do Windows Vista. Quando eu corri o código nada aconteceu. Eu precisava ser administrador para poder executar o script. Quando cliquei com o botão direito no arquivo .bat e "executei como administrador", não funcionou porque, por algum motivo, foi iniciado na pasta system32 (se bem me lembro). Para resolver isso, basta usar a variável de ambiente do Windows (explicada aqui: Variáveis de Ambiente do Windows )% ~ dp0 para retornar ao diretório onde o script foi executado.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
    FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files-zipz.exe" x %%X
    )
popd
)

Verifique se nenhum arquivo * .rar ou * .zip está no mesmo nível do script. Eles devem estar um nível abaixo.

Espero que este comentário tenha ajudado alguém.

    
por 16.02.2012 / 00:33
1
find . -name "*.zip" |  while read filename; do unzip -o -d "'dirname "$filename"'" "$filename"; done;

Inicia uma pesquisa recursiva no diretório atual, localiza todos os arquivos terminados em .zip e, em seguida, canaliza isso para um loop. Para cada arquivo que encontrar, ele executa um comando unzip no arquivo com a saída desviada para o diretório do arquivo.

    
por 11.07.2009 / 04:28
1

As respostas acima funcionam, no entanto, se você estiver executando Windows 64-bit e 7-Zip 32-bit , o caminho correto será C:\Program Files (x86)-Zip para 7-Zip. Abaixo está o roteiro que funcionou para mim.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
    FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files (x86)-zipz.exe" x %%X
    )
    popd
)
    
por 30.04.2016 / 19:31

Tags