извлечь файл из zip внутри другого zip с помощью командной строки 7z
Ниже приведен сценарий 7Zip CLI, который я сделал несколько лет назад. Мне пришлось использовать и корректировать его раз или два, чтобы приспособиться по мере необходимости.
Это извлекает все zip-файлы (и их содержимое) в другие zip-файлы (и их содержимое) до тех пор, пока не останется никаких других zip-файлов для извлечения и, по существу, рекурсивно переходит из исходного [root] родительского zip-файла до последнего дочернего zip-файла и его содержимого. ; извлечение файлов из всех файлов zip и sub-zip.
Я использовал этот метод для обхода примерно четырех уровней по какой-то нелепой причине, когда компания отправляла такие данные в качестве стандарта и не могла их изменить, но я все еще была в состоянии автоматизировать ту часть, которую мне дали для этого.
CLI 7za Batch Script
Задайте переменные исходного, конечного и рабочего каталогов, которые вам нужны, и скопируйте файл в папку исходного каталога, а затем запустите его. В противном случае вы можете изменить *.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
Дополнительные ресурсы