2

Я хотел бы выполнить команду «Извлечь здесь ...» для полной папки. Каждый тип архива должен быть распакован в текущую папку с именем файла архива. Я нашел несколько BATCH-скриптов для * .zip, но мне все равно, что это за архив, если мой архиватор может его открыть.

Кто-нибудь знает, у какого архиватора такая пакетная функциональность? Я не могу найти его в 7-ZIP или WinRar.

В псевдо:

Given folder x
foreach archiveFile in x or descendant of x
unzip archiveFile.extension >> "folder of archiveFile/archiveFile"

Обновить
Я пробовал следующее только для zip-файлов:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do unzip %%x

Где unzip еще неизвестная функция.

1 ответ1

5

РЕДАКТИРОВАТЬ : Использование пакетного сценария.

Возможно, вы захотите использовать сторонний zip-инструмент (настоятельно рекомендуем для этого использовать версию командной строки 7-ZIP с именем 7z.exe).

с 7z синтаксис выглядит следующим образом:

7z <command> [<switch>...] <base_archive_name> [<arguments>...]

Чтобы извлечь команду будет:

7z e file.zip -y

ключ -y предполагает, что ответ "Да" отвечает на любые вопросы, которые могут возникнуть во время извлечения, такие как запросы на перезапись.

Так что ваша команда будет читать

CD "C:\Location\Of\ZipFiles"
FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /b *.zip`) DO (7z e "%%F" -y)

Если вы хотите вывести их в другое место, вы можете использовать ключ -o и указать каталог:

7z e "%%F" -y -oC:\Some\Other\Folder\

РЕДАКТИРОВАТЬ:

Чтобы выполнить извлечение с полными путями и указанием только всех ZIP-архивов, используйте это:

7z x -tzip "C:\Location\of\zips\*"

Или даже сумасшедший ... все файлы ZIP на диске C:

7z x -r -tzip "C:\*"

EDIT2:

Делая его совместимым с вашим выходным файлом, это:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do (7z x -tzip "%%x")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .