Tanto quanto eu posso dizer, 7-zip não tem um comando que faz o que você está procurando. Aqui está um script de arquivo em lotes do Windows, que eu acho que vai fazer o que quiser. Ele deve ser executado a partir da linha de comando para que você possa fornecer um caminho para a raiz da árvore de pastas a ser processada.
Arquivo unzipper.bat
@echo off
setlocal
if "%1"=="" goto Usage
call :Get7zCmd
:: Recurse folder passed in as paramater
for /r %1 %%Z in (*.zip) do (
echo ====
rem Change to the directory of zip file
cd /d "%%~dpZ"
rem Extract all files to current directory
echo %_7zCmd% e "%%~nxZ" -y
rem Delete the zip file
echo del "%%~nxZ"
)
goto End
:Usage
echo.
echo Parses through folder structure starting at the specified path, finding
echo and extracting the contents of all zip files found, and then deletes
echo the zip file.
echo.
echo Usage:
echo %~n0 root-directory-path
echo.
echo For example:
echo.
echo %~n0 "D:\some folder"
:End
goto :EOF
:: ==========================
:: Subroutine Get7zCmd
:: Determines the full path to 7-zip command-line executable from the Windows
:: Registry and sets the variable "_7zCmd" to the result.
:Get7zCmd
set Reg.Key=HKLM\Software\Microsoft\Windows\CurrentVersion\App PathszFM.exe
set Reg.Val=Path
for /F "Tokens=2*" %%A in ('Reg Query "%Reg.Key%" /v "%Reg.Val%" ^| find /I "%Reg.Val%"') do call set PathDirectory=%%B
set _7zCmd="%PathDirectory%%z.exe"
exit /b 0
Como um todo o que o script faz é bastante radical e potencialmente destrutivo porque pode extrair um grande número de arquivos e excluir muitos arquivos zip posteriormente, eu desativei os comandos nas linhas 12 e 14 que fariam essas coisas prefixando -los com echo
. Isso os faz apenas imprimir o que eles teriam feito se o echo
não estivesse lá. Dessa forma, você pode testar o script primeiro sem causar nenhum dano ao seu sistema de arquivos, caso haja algum tipo de problema inesperado.
Para modificar o script, na verdade, execute estas ações, você precisará remover o echo
em cada uma das duas linhas. A renúncia padrão de qualquer responsabilidade se aplica, é claro.