Um one-liner do PowerShell para conseguir isso:
Get-ChildItem -Filter *.zip -Recurse C:\Archives | % { $_.FullName } | Split-Path | Get-Unique | % { cd $_ ; &'C:\Program Files-Zipz.exe' x *.zip -o* }
Aqui está uma explicação de cada seção, que é canalizada para a próxima seção e assim executada por Powershell em ordem:
-
Get-ChildItem -Filter * .zip -Recurse C: \ Archives : localiza todos os arquivos zip em C: \ Archives
-
% {$ _. FullName} : para o objeto resultante, mostre o caminho completo & nome
-
Split-Path : mostra apenas o caminho (não o nome do arquivo) de cada zip
-
Get-Unique : remova duplicados da lista
-
% {cd $ _; & 'C: \ Arquivos de programas \ 7-Zip \ 7z.exe' x * .zip -o *} : finalmente, use a lista criada para alterar em cada diretório encontrado; use 7z.exe para descompactar todos os arquivos zip encontrados em cada diretório, com o argumento -o * para descompactar o conteúdo de cada arquivo zip em um diretório com o nome desse arquivo zip
Suposições:
- C: \ Archives é o diretório sob o qual todos os seus arquivos zip são armazenados
- Seu 7-Zip está instalado no local padrão
Enquanto pesquisava essa questão, cheguei à conclusão de que prefiro bater no PowerShell: -)