Помогите правильно сделать апдейт архива 7zip (аналог функции RAR)
Здравствуйте.
Помогите пожалуйста: "Помогите правильно сделать апдейт архива 7zip (аналог функции RAR)" Хотел сделать функцию которая есть в RAR: - при создании архива, не сжимать определенные группы файлов/расширений. Создание архива с исключениями - ОК. А вот апдейт созданного архива сделать не получается. Пробовал варианты (закомментированы )- не работают. Заранее всем откликнувшимся большое спасибо! PS справку 7zip читал - моим мозгам не помогло https://sevenzip.osdn.jp/chm/cmdline...hes/update.htm Код:
@ECHO OFF |
Общий принцип:
Код:
@echo off |
Цитата:
Попробовал - стало лучше, но не совсем: 2 варианта: 7za.exe a "c:\tempXtoo\zip.7z" "c:\tempXsrc\" -mx0 -ir!exclusions_01_zip.lst 7za.exe a "c:\tempXtoo\zip.7z" "c:\tempXsrc\" -mx0 -i!exclusions_01_zip.lst (-ir! или -i!) оба варианта добавляют исключенные файлы по расширению - хорошо но добавляет и файл exclusions_01_zip.lst внутрь архива - видимо что-то не то... - подскажите пожалуйста что опять не правильно? |
Цитата:
Второе: Цитата:
|
blacks2, -mx0 = копирование без сжатия. Так и задумано? Без этого ключа будет применено значение по умолчанию (-mx5).
По умолчанию 7-Zip пытается прочесть файл-список в кодировке UTF-8, но вы можете использовать и иную кодировку, указав её ключом -scs . Множественные файл-списки поддержаны. Код:
7z a archive.7z @listfile.txt -scs1251 |
Цитата:
Скрытый текст
;)?! |
blacks2,
Цитата:
Код:
@Echo Off Set "Add0=%Exc3%" Если в масках возможны пробелы, то
Код:
@Echo Off |
Цитата:
Всё в разных! go_to_archiv.cmd + exclusions_01_zip.lst - лежат рядом, вместе на диске x:\some\rnd\ файлы для архивации и zip - "c:\tempXtoo\zip.7z" "c:\tempXsrc" Цитата:
-ir@exclusions_01_zip.lst -i@exclusions_01_zip.lst исключенные расширения добавились - ОК exclusions_01_zip.lst - не добавился - ОК Но.. на этот раз добавились... ненужные архивы лежащие рядом с исполняющим go_to_archiv.cmd (тестовая папка арихваторов) pigz_Windows.zip pigz_Windows_CloudFlareZlib.zip Что-то опять пошло не так. Что делать - не понимаю (( В обоих случаях добавлялся файл в котором присутствовало слово или расширение "zip". Которое указанно первым в списке исключений Можно конечно просто убрать из папки исполняющим CMD - файлы pigz_Windows.zip и pigz_Windows_CloudFlareZlib.zip (тогда все работает ОК) - но вдруг, в папке с исполняющим CMD появится файл с "zip" или другой какой с расширением записанным в списке исключений (картинка, pdf) - они могут добавиться в архив... Глянул еще раз список exclusions_01_zip.lst - вроде все норм. Даже попробовал в одну строку - результат не рабочий... exclusions_01_zip.lst
*.zip
*.7z *.rar *.gzip *.tar *.arj *.iso *.djvu *.epub *.jpg *.jpeg *.jp2 *.png *.gif *.webp *.avi *.mp4 *.mkv *.mpeg *.mpg *.avi *.wmv *.flv *.mp3 *.flac *.ogg *.3gp *.ape *.aac *.asf *.amr *.wma *.000 *.001 *.002 *.003 *.004 *.005 *.006 *.007 *.008 *.009 *.010 *.011 *.012 *.013 PS Хм, а вот megaloman предлагает -ir!% "%ArcOut%" :not-me: посмотрел, да и вы ранее в варианте с pushd также предлагали :happy: "Да. Особого смысла жать jpg/png и т.п. — нет. Как Вам такое:" потому мне и захотелось 7zip для тестов-прогонов так настроить. А не получается... * Iska, картинка гениальная! :jester: правда мои pdf печатного качества наоборот жмутся влёт: 300мб в 35-80Мб просто большинство pdf офис док-текст /или сжаты для веба - плохо и жмутся. всё зависит от настроек вывода pdf из софта - качество pdf) Цитата:
ничего лишнего не добавляет - гуд только создаваемый архив не имеет имени, просто ".zip" (делал через 7za.exe) назначить имя файлу не понял как 0:) Далее решил попробовать так в своем cmd: a -ssw -mx9 -r0 -xr@exclusions_01_zip.lst u -ssw -mx0 -r0 -i@exclusions_01_zip.lst (изменил а на u) - работает! - НО.. как писал выше, при обновлении архива, добавляются pigz_Windows.zip, pigz_Windows_CloudFlareZlib.zip лежащие рядом с исполняющим CMD - ...походу особенности 7zip или что-то не то с exclusions_01_zip.lst (там указан формат *.zip) Не понимаю... "Оформление"-способ скрипта все же хотелось оставить свой прежний, нежели PUSHD так как мне более понятный и в общем концепте выглядит гармонично (всё сделано молотком, а тут что-то изящное и не понятное =) ) Но не получается! Не понимаю! :clapping: почему добавляются zip.. и возможные дальнейшие конфликты с другими файлами OFF Цитата:
"?? * *.mp3" - файл вида "маша - бла бла бла.mp3" - разве *.mp3 недостаточно? - простите за вопрос, просто ранее таких конструкций не видел, потому смутился =) Цитата:
я новичок в cmd, не программист - изредка собираю что-то для домашнего парка на заплатках-сниппетах и полученном ранее опыте. потому конструкция в топике мне проще и понятней, а на несколько ступенек выше еще не перешел. плюс стандартный вопрос новичка: когда делаешь шаг на новую ступень, твое положение шатко и возможны конфликты в коде =) вместо 3d принтера... молоток+гвоздь PUSHD`ом пока не проникся... |
Цитата:
Цитата:
Цитата:
И, раз такая пьянка, если Вы разделяете файлы только по расширению, то список можно сделать проще, убрать из списка *. и оставить только расширения: Код:
@Echo Off |
Цитата:
И без всяких лишних добавлений лишних файлов. Спасибо! 1. Насколько понимаю всё "выполняется из" %BoxIn% - вне папки исполняющего cmd Поэтому ничего лишнего не подхватывается =) Странно что предыдущий пример не работал. Вроде по концепту они схожи. Моей копии, о которой вы спросили не сохранилось. Создал новую, новая вообще не исключает файлы по расширению =) Но, наверное, уже не в ней суть - последняя версия сработала. Копия предыдущего примера
@Echo Off
Set "BoxIn=c:\tempXsrc" Set "ArcOut=c:\tempXtoo\testzip" Set "Exc3=*.zip *.bat *.vbs *.js *.mp3 *.xls* *.png *.jpg *.jpeg" Set "Add0=%Exc3%" Set Arc="%~dp07za.exe" :: удаляем старый архив del c:\tempXtoo\testzip.7z cls pushd "%BoxIn%" &&( %Arc% u -mx3 -r0 -xr!%Exc3: = -xr!% "%ArcOut%" %Arc% u -mx0 -r0 -ir!%Add0: = -ir!% "%ArcOut%" ) echo OK all Pause Exit /B 2. Добавив ваш пример в сборку с своими переменным - При старте cmd просто вылетает Попытка вставить в сборку ваш чистый пример скрипта (без моих переменных) выдается ошибка Command Line Error: Incorrect wildcard type marker Сборка cmd построена на вашем megaloman совете-примере точного определения времени в виде cmd-javascript. ( http://forum.oszone.net/post-2940716-8.html ) - добавлял прямяком заменой "rem === здесь код, время исполнения которого контролируем" Видимо в чем-то конфликт... Та сама ступенька новика о которой недавно писал :). Вычислить и исправить баг/кривые свои руки, я самостоятельно не могу. Видно лишь то, что походу срабатывает прям на строке "pushd "%src_bkup%" &&(...." Развивать данный топик на тему "спасибо за помощь, а теперь разберите почему не работает с моим"... - думаю неуважение к вам megaloman и к форуму Поэтому наверное мне придется остаться при "баранах" 7za par1=a -ssw -mx3 -r0 -xr@exclusions_01_zip.lst -mhc=on -mhe=on "%destination%\zip.7z" "%src_bkup%\" 7za par2=u -ssw -mx0 -r0 -i@exclusions_01_zip.lst -mhc=on -mhe=on "%destination%\zip.7z" "%src_bkup%\" хоть они и "подхватывают" zip рядом с исполняющим файлом( * 7za.exe хранится рядом с исполняющим cmd а сама вся та папка, плавает в разных местах диска/флешки Поэтому добавил такую строчку (вроде работает): Set Arc="%~dp07za.exe" |
И всё же, без pushd, Вы никак не получите потребный функционал. Это не WinRAR, тут нет возможностей по манипуляции со включениями/исключениями путей (и их частей) в содержимое архива, как в WinRAR'е. Причём, только на моей памяти Игоря несколько раз просили расширить функционал 7-Zip в этом направлении, но он всякий раз отказывался.
|
Цитата:
Буду порой долбить себе мозг в то направление. Да, по той причине и решил попробовать прогнать по тестам-сравнениям в вариант с update Правда знаний как в cmd то собрать - не хватило... Про Игоря... думаю причина в логике: - если просто жать - тебе не интересны исключения - бытовой уровень и ок. - если хорошо жать - тогда тебе нужны solid архивы - а solid + исключения + словарь = скорее всего не вяжутся логически в алгоритмах/время затратах - ...тогда если "нужно хорошо жать" = жми все и максимум возможно =) |
Время: 19:09. |
Время: 19:09.
© OSzone.net 2001-