|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите правильно сделать апдейт архива 7zip (аналог функции RAR) |
|
|
CMD/BAT - [решено] Помогите правильно сделать апдейт архива 7zip (аналог функции RAR)
|
Пользователь Сообщения: 99 |
Профиль | Отправить PM | Цитировать
Здравствуйте.
Помогите пожалуйста: "Помогите правильно сделать апдейт архива 7zip (аналог функции RAR)" Хотел сделать функцию которая есть в RAR: - при создании архива, не сжимать определенные группы файлов/расширений. Создание архива с исключениями - ОК. А вот апдейт созданного архива сделать не получается. Пробовал варианты (закомментированы )- не работают. Заранее всем откликнувшимся большое спасибо! PS справку 7zip читал - моим мозгам не помогло https://sevenzip.osdn.jp/chm/cmdline...hes/update.htm @ECHO OFF :: удаляем старый архив del c:\tempXtoo\zip.7z echo OK (delit) echo. & echo. cls :: создаем новый, исключив определенные расширения файлов (указаны в списке exclusions_01_zip.lst) :: сжатие = 3 уровня 7za a -mx3 -r0 "c:\tempXtoo\zip.7z" "c:\tempXsrc" -x@exclusions_01_zip.lst echo. &echo. echo OK (-jpg -png...) pause cls :: добавляем в созданный архив, файлы которые не были добавлены / по списку-расширений :: с сжатием = 0 уровня :: 7za a -mx0 -r0 -i@exclusions_01_zip.lst "c:\tempXtoo\zip.7z" "c:\tempXsrc\" :: 7za a -mx0 -r0 -ir@exclusions_01_zip.lst "c:\tempXtoo\zip.7z" "c:\tempXsrc\" :: 7za u -mx0 -r0 -u!"c:\tempXtoo\zip.7z" "c:\tempXsrc\" :: 7za u -mx0 -ur2!"c:\tempXtoo\zip.7z" "c:\tempXsrc\" echo. & echo. echo OK (update) pause cls echo. & echo. echo fin pause |
|
Отправлено: 22:38, 24-11-2020 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Общий принцип:
@echo off
setlocal enableextensions disabledelayedexpansion
set sArcName=C:\Мои проекты\0326\Sample.7z
pushd "C:\Мои проекты\0326\Source" && (
"C:\Program Files\7-Zip\7za.exe" a "%sArcName%" -mx3 -xr!*.png -xr!*.jpg
"C:\Program Files\7-Zip\7za.exe" a "%sArcName%" -mx0 -ir!*.png -ir!*.jpg
)
endlocal
exit /b 0
|
Отправлено: 01:08, 25-11-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 99
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Попробовал - стало лучше, но не совсем: 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 внутрь архива - видимо что-то не то... - подскажите пожалуйста что опять не правильно? |
|
Отправлено: 02:21, 25-11-2020 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blacks2:
Второе: listfile должен предваряться символом «@», а не «!». А так Вы закономерно получаете внутри архива ровно то, что и запросили. |
|
Отправлено: 02:46, 25-11-2020 | #4 |
Ветеран Сообщения: 2183
|
Профиль | Отправить PM | Цитировать blacks2, -mx0 = копирование без сжатия. Так и задумано? Без этого ключа будет применено значение по умолчанию (-mx5).
По умолчанию 7-Zip пытается прочесть файл-список в кодировке UTF-8, но вы можете использовать и иную кодировку, указав её ключом -scs . Множественные файл-списки поддержаны. |
|
Отправлено: 07:02, 25-11-2020 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата sov44:
Скрытый текст
?! |
|
Отправлено: 08:52, 25-11-2020 | #6 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать blacks2,
Цитата blacks2:
@Echo Off cls Set "BoxIn=D:\CMD_Forum" Set "ArcOut=D:\Delete\testzip" Set "Exc3=*.bat *.vbs *.js *.mp3 *.xls* *.png" Set "Add0=*.mp3 *.xls*" Set Arc="C:\Program Files\7-Zip\7z.exe" pushd "%BoxIn%" &&( %Arc% u -mx3 -r0 -xr!%Exc3: = -xr!% "%ArcOut%" %Arc% u -mx0 -r0 -ir!%Add0: = -ir!% "%ArcOut%" ) Pause Exit /B Set "Add0=%Exc3%" Если в масках возможны пробелы, то
@Echo Off cls Set "BoxIn=D:\CMD_Forum" Set "ArcOut=D:\Delete\testzip1" Set "Exc3="*.bat" "*.vbs" "*.js" "?? * *.mp3" "*.xls*" "*.png"" Set "Add0="?? * *.mp3" "*.xls*"" Set Arc="C:\Program Files\7-Zip\7z.exe" pushd "%BoxIn%" &&( %Arc% u -mx3 -r0 -xr!%Exc3:" "=" -xr!"% "%ArcOut%" %Arc% u -mx0 -r0 -ir!%Add0:" "=" -ir!"% "%ArcOut%" ) Pause Exit /B |
|
------- Последний раз редактировалось megaloman, 25-11-2020 в 20:55. Отправлено: 20:33, 25-11-2020 | #7 |
Пользователь Сообщения: 99
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Всё в разных! go_to_archiv.cmd + exclusions_01_zip.lst - лежат рядом, вместе на диске x:\some\rnd\ файлы для архивации и zip - "c:\tempXtoo\zip.7z" "c:\tempXsrc" Цитата Iska:
-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%" посмотрел, да и вы ранее в варианте с pushd также предлагали "Да. Особого смысла жать jpg/png и т.п. — нет. Как Вам такое:" потому мне и захотелось 7zip для тестов-прогонов так настроить. А не получается... * Iska, картинка гениальная! правда мои pdf печатного качества наоборот жмутся влёт: 300мб в 35-80Мб просто большинство pdf офис док-текст /или сжаты для веба - плохо и жмутся. всё зависит от настроек вывода pdf из софта - качество pdf) Цитата megaloman:
ничего лишнего не добавляет - гуд только создаваемый архив не имеет имени, просто ".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 так как мне более понятный и в общем концепте выглядит гармонично (всё сделано молотком, а тут что-то изящное и не понятное ) Но не получается! Не понимаю! почему добавляются zip.. и возможные дальнейшие конфликты с другими файлами OFF Цитата megaloman:
"?? * *.mp3" - файл вида "маша - бла бла бла.mp3" - разве *.mp3 недостаточно? - простите за вопрос, просто ранее таких конструкций не видел, потому смутился Цитата megaloman:
я новичок в cmd, не программист - изредка собираю что-то для домашнего парка на заплатках-сниппетах и полученном ранее опыте. потому конструкция в топике мне проще и понятней, а на несколько ступенек выше еще не перешел. плюс стандартный вопрос новичка: когда делаешь шаг на новую ступень, твое положение шатко и возможны конфликты в коде вместо 3d принтера... молоток+гвоздь PUSHD`ом пока не проникся... |
|||||
Отправлено: 00:32, 27-11-2020 | #8 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата blacks2:
Цитата megaloman:
Цитата blacks2:
И, раз такая пьянка, если Вы разделяете файлы только по расширению, то список можно сделать проще, убрать из списка *. и оставить только расширения: @Echo Off cls Set "BoxIn=D:\CMD_Forum" Set "ArcOut=D:\Delete\testzip" Set "Exc3=bat vbs js mp3 xls* png" Set "Add0=mp3 xls*" Set Arc="C:\Program Files\7-Zip\7z.exe" pushd "%BoxIn%" &&( %Arc% u -mx3 -r0 -xr!*.%Exc3: = -xr!*.% "%ArcOut%" %Arc% u -mx0 -r0 -ir!*.%Add0: = -ir!*.% "%ArcOut%" ) Pause Exit /B |
|||
------- Отправлено: 14:19, 27-11-2020 | #9 |
Пользователь Сообщения: 99
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
И без всяких лишних добавлений лишних файлов. Спасибо! 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" |
|
Отправлено: 08:25, 28-11-2020 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - [sevenzip] Как распаковать определённый файл из архива 7zip | Painkiller | Программирование и базы данных | 10 | 24-01-2022 12:06 | |
Утилита для создания/изменения 7zip SFX-архива | XXXler | Автоматическая установка Windows 2000/XP/2003 | 38 | 24-06-2017 14:23 | |
[решено] Как самой сделать апдейт драйверам? | Мартиша | Хочу все знать | 5 | 16-08-2008 19:35 | |
Как правильно сделать загрузчик? | James Marsh | Общий по Linux | 9 | 17-05-2005 13:50 | |
Про Винс, Вин апдейт, и апдейт авп | ZloiJoker | Общий по FreeBSD | 9 | 09-12-2003 15:37 |
|