Extraiga el archivo de un zip dentro de otro zip usando la línea de comando 7z

Extraiga el archivo de un zip dentro de otro zip usando la línea de comando 7z

Conozco este comando:

7z e [archive.zip]-o[outputdir] [fileFilter]

Pero el archivo que quiero extraer está en un Zip dentro de otro Zip, por ejemplo:

Archivo1.zip\Carpeta1\Archivo2.zip 

Utilizo esta línea pero el resultado es que no puedo encontrar el archivo:

C:\Program Files\7-Zip\7z" x "C:\File 1.zip\Folder 1\File 2.zip" -O"C:\Output folder" "Imagen 1.tif"

¿Cómo puedo hacer que funcione?

Respuesta1

extraer el archivo de un zip dentro de otro zip usando la línea de comando 7z

A continuación se muestra una secuencia de comandos de 7Zip CLI en la que hice esto hace unos años. Tuve que usarlo y ajustarlo una o dos veces desde entonces para adaptarlo según sea necesario.

Esto extrae todos los archivos zip (y su contenido) dentro de otros archivos zip (y su contenido) hasta que no queden otros archivos zip para extraer y esencialmente atraviesa recursivamente desde el archivo zip principal inicial [raíz] hasta el último archivo zip secundario y su contenido. ; extraer archivos de todos los archivos zip y sub-zip.

Utilicé este método para atravesar aproximadamente cuatro niveles por alguna razón ridícula en la que una empresa enviaba datos como este como estándar y no podía cambiarlos, pero aún así pude automatizar la parte que me asignaron para hacerlo.


Secuencia de comandos por lotes CLI 7za

Configure las variables de origen, destino y directorio de trabajo según sus necesidades, copie el archivo en la carpeta del directorio de origen y luego inícielo. De lo contrario, puedes cambiar el *.zipcon <ParentZipFileName>.zip.

:: This script uses the 7zip CLI to extract ZIP file(s) contents in one location to another
:: It then does an XCOPY of extracted ZIP files within the initial extacted files and copies those to a workdir
:: It then deletes ZIP files from source, and extracts the other ZIP files from workdir and loops until complete
:: NOTE that the 7za may need to have the environmental variable set accordinly

SET sourcedir=C:\Source
SET destdir=C:\Dest
SET workdir=C:\Workdir
IF NOT EXIST "%sourcedir%" MD "%sourcedir%"
IF NOT EXIST "destdir%" MD "%destdir%"
IF NOT EXIST "%workdir%" MD "%workdir%"

:unzip
7za -Y e "%sourcedir%" -o"%destdir%" -r
IF EXIST "%workdir%\*.zip" DEL /Q /F "%workdir%\*.zip"
XCOPY /Y /F "%destdir%\*.zip" "%workdir%\"
IF EXIST "%destdir%\*.zip" DEL /Q /F "%destdir%\*.zip"

DIR "%workdir%\*.zip" /A-D                         
ERRORLEVEL 1 GOTO done

:unzip2
7za -Y e "%workdir%" -o"%destdir%" -r
IF EXIST "%workdir%\*.zip" DEL /Q /F "%workdir%\*.zip"
XCOPY /Y /F "%destdir%\*.zip" "%workdir%\"
IF EXIST "%destdir%\*.zip" DEL /Q /F "%destdir%\*.zip"

DIR "%workdir%\*.zip" /A-D                         
IF ERRORLEVEL 1 GOTO done
GOTO unzip2

:done
GOTO EOF

Recursos adicionales

información relacionada