Extraia o arquivo de um zip dentro de outro zip usando a linha de comando 7z

Extraia o arquivo de um zip dentro de outro zip usando a linha de comando 7z

Eu conheço este comando:

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

Mas o arquivo que quero extrair está em um Zip dentro de outro Zip por exemplo:

Archivo1.zip\Carpeta1\Archivo2.zip 

Eu uso esta linha, mas o resultado é que não consigo encontrar o arquivo:

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

Como posso fazer trabalho?

Responder1

extrair arquivo de um zip dentro de outro zip usando a linha de comando 7z

Abaixo está um script 7Zip CLI que fiz isso alguns anos atrás. Tive que usá-lo e ajustá-lo uma ou duas vezes para acomodar conforme necessário.

Isso extrai todos os arquivos zip (e seu conteúdo) dentro de outros arquivos zip (e seu conteúdo) até que nenhum outro arquivo zip permaneça para extrair e essencialmente percorre recursivamente do arquivo zip pai [raiz] inicial até o último arquivo zip filho e seu conteúdo ; extraindo arquivos de todos os arquivos zip e sub-zip.

Usei esse método para percorrer cerca de quatro níveis por algum motivo ridículo, onde uma empresa estava enviando dados como esse como padrão e não podia alterá-los, mas ainda consegui automatizar a parte que me foi dada para fazer isso.


Script em lote CLI 7za

Defina as variáveis ​​do diretório de origem, destino e de trabalho de acordo com sua necessidade e copie o arquivo para a pasta do diretório de origem e, em seguida, inicie-o. Caso contrário, você pode alterar o *.zipwith <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 adicionais

informação relacionada