Extrai todos os Zip's em um diretório (incluindo subpastas) com um arquivo .bat ou um comando dos

6

Eu quero extrair todos os arquivos .zip e .rars em uma pasta e seus filhos

A estrutura é assim:

MAIN_FOLDER
    -A folder
        - a.zip
            -a.rar
    -B folder
        - b.zip
            -b.rar
    -C folder
        ....    
            ...

Eu já tentei isso, o que não funcionou

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

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

)

Eu uso o Windows e tenho o 7-Zip instalado.

Pergunta adicional: Seria possível salvar todos os arquivos extraídos dos últimos filhos (a.rar, b.rar) em uma única pasta (pasta principal)?

    
por Email 25.12.2011 / 00:38

6 respostas

11

O script:

for /F %%I IN ('dir /b /s *.zip *.rar') DO (
    "C:\Program Files-Zipz.exe" x -o"%%~dpI" "%%I"
)

Explicação:

for /F %%I IN ('dir /b /s *.zip *.rar') DO (

Isso realiza um loop para cada arquivo retornado pelo comando dir /b /s *.zip *.rar . O /s informa dir para recursar em subdiretórios e /b imprime no formato simples.

O nome do arquivo é armazenado na variável %%I para uso posterior. Se você estivesse digitando no prompt, usaria %I .

"C:\Program Files-Zipz.exe" x -o"%%~dpI" "%%I"

Isso realiza a extração. O argumento -o"%%~dpI" extrai o arquivo no mesmo diretório em que o arquivo reside. Outras opções:

  • -o"%%~dpI" - Extrai para o diretório em que o arquivo reside.

  • -o"%%~dpnI" - Cria um novo diretório na hierarquia com o nome do arquivo e extrai lá (isto é, AFolder\archive.zip extrai para AFolder\archive\ ).

  • -o"%%~nI" - Cria um novo diretório no diretório atual nomeado após o archive e extrai lá (ou seja, AFolder\archive.zip extrai para .\archive\ ).

  • Omita o argumento -o - Extrai para o diretório atual.

Exemplo:

C:\Temp>tree /F

    Folder PATH listing
    Volume serial number is 08A4-22E0
    C:.
    │   batch.bat
    │
    ├───AFolder
    │       a.zip
    │
    ├───BFolder
    │       b.zip
    │
    └───CFolder
            c.zip



C:\Temp>batch.bat > nul


C:\Temp>tree /F

    Folder PATH listing
    Volume serial number is 08A4-22E0
    C:.
    │   batch.bat
    │
    ├───AFolder
    │       a.zip
    │       a.zip.txt
    │
    ├───BFolder
    │       b.zip
    │       b.zip.txt
    │
    └───CFolder
            c.zip
            c.zip.txt
    
por 26.12.2011 / 03:38
1

Acredito que você está procurando o comando forfiles :

  • forfiles /s /m *.zip /c "7z x @file"

  • forfiles /s /m *.rar /c "7z x @file"

por 25.12.2011 / 01:07
1

Esta é uma atualização da resposta aceita para suportar nomes de arquivos com espaços ("DELIMS=") e pular sobrescrever (-aos). Veja os links abaixo e o código atualizado. Obrigado

Extraia todos os Zip's em um diretório (incl. Subpastas) com um arquivo .bat ou comando dos link link

for /F "DELIMS=" %%I IN ('dir /b /s *.zip *.rar') DO (
    "H:\Program Files-Zipz.exe" x -aos -o"%%~dpI" "%%I"
)
    
por 14.04.2017 / 20:04
0
7z e -an -air!*.rar -r

extrai todos os arquivos rar das subpastas do diretório atual (recursivamente) para a pasta atual. Altere para -air! *. Zip para arquivos zip.

    
por 24.06.2016 / 16:13
0

Eu apenas uso o sweep.exe de anos atrás. Ele executa o mesmo comando no diretório atual e em todos os subdiretórios.

Você pode ter que executar a varredura mais de uma vez se quiser extrair arquivos em um arquivo.

Você pode usar algo como:

sweep 7za x -y *.zip

para abrir todos os arquivos .zip na pasta atual e em todas as pastas abaixo.

A versão da linha de comando do 7zip está aqui: link

    
por 24.06.2016 / 19:08
0
@echo off

FOR /R %%g IN (.) DO TITLE Extracting from %%~ng & "%~dp07z.exe" x -aou "%%g\*.rar" -o"%%g" & "%~dp07z.exe" & CLS

Copie isso para um arquivo de texto e renomeie-o para extract.bat e coloque-o na pasta pai contendo as outras pastas com arquivos. Coloque o 7z.exe na mesma pasta que o arquivo extract.bat ou modifique o caminho no comando acima para refletir o local instalado de seu 7z.exe . Isso extrai todos os RARs em cada subpasta para a mesma subpasta que o RAR. Não faz nenhuma "limpeza da casa" (como a minha namorada) ...

Ajuste o *.rar para atender às suas necessidades.

    
por 08.11.2016 / 01:10