Como extrair vários arquivos contidos em subdiretórios em uma pasta, retornando os resultados para as pastas onde estão os arquivos.
Em primeiro lugar, instale o 7-zip .
Crie um bat
arquivo na raiz do diretório que contém muitos subdiretórios com arquivos dentro. 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\7-zip\7z.exe" x "%%X"
)
popd
)
Inicie o bastão e todos os rar / zips serão extraídos para a pasta em que estão contidos.
Como é que isso funciona?
FOR / D / r %% F em ("*") DO (
For loop para percorrer todas as pastas no diretório atual e coloque o caminho em uma variável
%%F
.
pushd% CD%
Coloque o diretório atual em que estamos na memória.
cd %% F
Defina a pasta da variável
%%F
como o diretório atual.
FOR %%X in (*.rar *.zip) DO (
Para todos os arquivos
rar
ezip
na pasta atual, faça:
"C:\Program Files\7-zip\7z.exe" x "%%X"
Execute 7-zip nos arquivos. As cotações são necessárias,
%%X
pois alguns nomes de arquivos têm espaços.
popd
Retorne ao diretório anterior que armazenamos anteriormente na memória.
Espero que isso seja útil para alguém.
Ocorreu um problema ao executar o script no 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 do mouse no arquivo .bat e "execute como administrador", ele 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 em que 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\7-zip\7z.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.
Inicia uma pesquisa recursiva no diretório atual, localiza todos os arquivos que terminam em .zip e, em seguida, canaliza isso em um loop. Para cada arquivo encontrado, ele executa um comando descompactar no arquivo com a saída desviada para o diretório do arquivo.
fonte
As respostas acima funcionam, no entanto, se você estiver executando
Windows 64-bit
e7-Zip 32-bit
, o caminho correto éC:\Program Files (x86)\7-Zip
para o 7-Zip. Abaixo está o script que funcionou para mim.fonte