7z コマンドラインを使用して、別の zip 内の zip からファイルを抽出する

7z コマンドラインを使用して、別の zip 内の zip からファイルを抽出する

私はこのコマンドを知っています:

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

しかし、抽出したいファイルは別の Zip 内の Zip 内にあります。たとえば、次のようになります。

Archivo1.zip\Carpeta1\Archivo2.zip 

この行を使用しましたが、結果はアーカイブが見つからないというものです:

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

どうすれば仕事ができるでしょうか?

答え1

7z コマンドラインを使用して、別の zip 内の zip からファイルを抽出する

以下は、数年前に私が行った 7Zip CLI スクリプトの方法です。それ以来、必要に応じて 1、2 回使用して調整する必要がありました。

これは、他の zip ファイル (およびその内容) 内のすべての zip ファイル (およびその内容) を、抽出する他の zip ファイルがなくなるまで抽出し、基本的に開始 [ルート] 親 zip ファイルから最後の子 zip ファイルとその内容まで再帰的に走査して、すべての zip ファイルとサブ zip ファイルからファイルを抽出します。

私はこの方法を使用して、約 4 つのレベルを通過しました。何らかのばかげた理由により、企業がこのようなデータを標準として送信しており、それを変更することはできませんでしたが、それでも、指示された部分を自動化することができました。


CLI 7za バッチ スクリプト

必要に応じてソース、宛先、作業ディレクトリの変数を設定し、ファイルをソース ディレクトリ フォルダーにコピーして開始します。それ以外の場合は、 で変更でき*.zipます<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

その他のリソース

関連情報