
У меня есть 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
Примечания:
- Единственный способ сделать модификацию переменных с помощью модификаторов ~ — использовать фиктивный цикл for..in. Если есть способ получше, пожалуйста, отредактируйте.
- ~nx изменяет переменную, делая ее полным путем+именем файла.
- ~dpnx делает то же самое с %0, то есть получает полный путь и имя файла скрипта.
- -o* в командной строке 7zip позволяет 7zip создавать имена папок без расширения .zip, как это происходит при извлечении с помощью щелчка правой кнопкой мыши в графическом интерфейсе.
- ~n изменяет переменную, делая ее именем файла без расширения. т.е. удаляет .zip
- Обратите внимание, что экранирующий символ (для кавычек) в
FORFILES /P
— это^
(каретка), а дляCMD /C
— это\
. Это гарантирует, что он будет обрабатывать пути и имена файлов с пробелами также рекурсивно, без каких-либо проблем. - Вы можете удалить REM из оператора DEL, если хотите, чтобы zip-файл был удален после распаковки.
решение4
Видеть это
http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml
«Обработка вложенных архивов (рекурсивное извлечение архивов, упакованных в другие архивы)».
ОС: Windows 2K / XP / 2003 / Vista