¿Cómo extraigo todos los archivos ZIP en subcarpetas usando 7-Zip en Windows 7?

¿Cómo extraigo todos los archivos ZIP en subcarpetas usando 7-Zip en Windows 7?

Tengo una gran estructura de árbol de carpetas en Windows 7 que contiene muchosCREMALLERAarchivos. Estos son archivos ZIP de una sola capa (no ZIP dentro de ZIP). ¿Qué comando 7-Zip puedo usar para analizar esta estructura de carpetas, encontrar cada archivo ZIP por extensión de archivo (ver ejemplo), extraerlo (eliminar el archivo ZIP, dejar los archivos extraídos) en la misma ubicación?

Ejemplo: todos los archivos en la jerarquía de carpetas tienen nombres similares a: abc.mp3.zip o xyz.jpg.zip, la extensión de archivo nativa seguida de ".zip". Quiero que 7-Zip busque todos los archivos en el árbol por extensión de archivo usando comodines (*.mp3.zip, *.jpg.zip, etc.) y los extraiga a la ubicación actual sin crear nuevas carpetas para que el resultado sea abc. mp3 y xyz.jpg.

Respuesta1

Hasta donde puedo decir, 7-zip no tiene un comando que haga lo que estás buscando. Aquí hay un script de archivo por lotes de Windows que creo que hará lo que quieras. Debe ejecutarse desde la línea de comando para que pueda proporcionar una ruta a la raíz del árbol de carpetas que se procesará.

Archivounzipper.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 Paths\7zFM.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%%\7z.exe"
exit /b 0

Dado que, en general, lo que hace el script es bastante radical y potencialmente destructivo porque podría extraer una gran cantidad de archivos y eliminar muchos archivos zip después, deshabilité los comandos en las líneas 12 y 14 que harían esas cosas anteponiéndolos con el prefijo echo. Esto les hace simplemente imprimir lo que habrían hecho si echono estuviera allí. De esa manera, puede probar el script primero sin dañar su sistema de archivos en caso de que surja algún tipo de problema inesperado.

Para modificar el script y realizar estas acciones, deberá eliminar el echoen cada una de las dos líneas. Por supuesto, se aplica la exención de responsabilidad estándar.

información relacionada