7zコマンドラインを使用して別のzipファイル内のzipファイルからファイルを抽出する
以下は、私が数年前から7Zip CLIでスクリプト化した方法です。私は必要に応じて対応するためにそれを使用し調整する必要がありました。
これは、他のzipファイル(およびその内容)内のすべてのzipファイル(およびその内容)を、他のzipファイル(およびその内容)から抽出する残りがなくなるまで開始し、開始の[root]親zipファイルから最後の子zipファイルおよびその内容まで再帰的に横断するまで抽出します。 ; すべてのzipおよびsub-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
その他の資料