распаковать zip-файлы, содержащиеся в zip-файле в Windows

распаковать zip-файлы, содержащиеся в zip-файле в Windows

У меня есть zip-файл results.zip. Он содержит две папки, содержащие кучу zip-файлов — PASS/test1.zip, FAIL/test2.zip, FAIL/test3.zip.

В Linux их легко распаковать за пару шагов:

$ unzip results.zip
$ echo FAIL/*.zip PASS/*.zip | xargs -n1 unzip

Некоторые пользователи Windows жалуются, что распаковывать все файлы в Windows неудобно. (Внутри основного архива находятся десятки zip-файлов.) Есть ли механизм, который позволил бы им развернуть содержимое всех файлов одновременно?

Некоторые клиентские устройства более новые, но многие из них по-прежнему используют WinXP.

решение1

Дайте имраспаковать.exeи пакетный скрипт вроде

unzip results.zip
for %%i in (FAIL\*.zip PASS\*.zip) do unzip %%i

решение2

ПытатьсяИзвлечь сейчасЯ сам не тестировал эту функцию, но она работает.утверждают, что поддерживают это.

решение3

Вот решение для Windows, предполагающее, что 7zip установлен в папке по умолчанию.

@echo off
Setlocal EnableDelayedExpansion
Set source=%1
Set SELF=%~dpnx0
For %%Z in (!source!) do (
    set FILENAME=%%~nxZ
)
set FILENAME=%FILENAME:"=%
"%PROGRAMFILES%\7-zip\7z.exe" x -o* -y "%FILENAME%"
rem DEL "%FILENAME%"
For %%Z in (!source!) do (
    set FILENAME=%%~nZ
)
for %%a in (zip rar jar z bz2 gz gzip tgz tar lha iso wim cab rpm deb) do (
    
    forfiles /P ^"%FILENAME%^" /S /M *.%%a /C "cmd /c if @isdir==FALSE \"%SELF%\" @path"
)

Это было адаптировано отсюдаhttps://social.technet.microsoft.com/Forums/ie/en-US/ccd7172b-85e3-4b4a-ad93-5902e0abd903/пакетная-компиляция-файлов-из-вложенных-архивов?forum=ITCG

Примечания:

  1. Единственный способ сделать модификацию переменных с помощью модификаторов ~ — использовать фиктивный цикл for..in. Если есть способ получше, пожалуйста, отредактируйте.
  2. ~nx изменяет переменную, делая ее полным путем+именем файла.
  3. ~dpnx делает то же самое с %0, то есть получает полный путь и имя файла скрипта.
  4. -o* в командной строке 7zip позволяет 7zip создавать имена папок без расширения .zip, как это происходит при извлечении с помощью щелчка правой кнопкой мыши в графическом интерфейсе.
  5. ~n изменяет переменную, делая ее именем файла без расширения. т.е. удаляет .zip
  6. Обратите внимание, что экранирующий символ (для кавычек) в FORFILES /P— это ^(каретка), а для CMD /C— это \. Это гарантирует, что он будет обрабатывать пути и имена файлов с пробелами также рекурсивно, без каких-либо проблем.
  7. Вы можете удалить REM из оператора DEL, если хотите, чтобы zip-файл был удален после распаковки.

решение4

Видеть это

http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml

«Обработка вложенных архивов (рекурсивное извлечение архивов, упакованных в другие архивы)».

ОС: Windows 2K / XP / 2003 / Vista

Связанный контент