Задать вопрос
@p4_pirate
Dumb Sysadmin

Как распаковать архив рекурсивно?

Помогите, пожалуйста со скриптом для zip файлов.
Есть структура из более 1000 папок
- 2 основных (А1, А2)
- около 65-70 вложенных папок второго уровня (А11, А12, А21, А22 и т.д.)
- в каждую вложено еще около 13-15 третьего уровня (А111, А112...)
В каждой папке есть архивы с названием -name-.zip имя разное.

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

То есть если в архиве -name-.zip находится папка buh и файл buh.sig, то при распаковке должна получиться структура
D:\A1\A11\A111\buh и D:\A1\A11\A111\buh.sig
D:\A1\A11\A112\buh и D:\A1\A11\A112\buh.sig

а не D:\A1\A11\A111\-name-\buh и D:\A1\A11\A111\-name-\buh.sig
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
т.е. нужно просто рекурсивно зайти в каждый подкаталог, и для каждого zip файла выполнить unzip -x name.zip

for /R %%F in (*.zip) do unzip x "%%F" -d "%%~dpF"
p.s. проверить не на чем, очень давно без windows и вообще не рекомендую писать сложные скрипты на bat, языку лет 30 уже наверное.. можно наверное на powershell но я не подскажу мне он еще меньше нравится.

в windows в поставке идет штатно полноенный .net и коппилятор c#/js#/vbs#, с адекватным синтаксисом.

а еще ранее, с windows идет windows scripting host, с поддержкой javscript/vbscript, который запускает скрипты прямо из текстового файла wscript //nologo myscript.js..

да в лоб код будет объемнее, но если тебе нужно работать с датами, проверять корректность распаковки или к примеру контролировать вывод архиватора (например были ли перезаписи файлов с теми же именами) то нормальный язык предпочтительнее
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы