Архивация папки программой 7zip
Я уже давным давно отказался от архиватора rar, вместо него я использую бесплатный 7zip. Скачиваем и устанавливаем, всё как обычно.
По стандарту он ставится в папку C:\Program Files\7-Zip
Синтаксис 7zip
Общий синтаксис
Распаковка
ключ x распаковывает с сохранением структуры каталогов
e — все в одно место.
Архивация
Описание основных команд
Команда | Описание |
---|---|
a | Добавление файлов в архив. Если архивного файла не существует, создает его. |
d | Удаление файла из архива |
e | Извлечение файлов из архива. Все файлы оказываются в одной папке. |
l | Вывод содержимого архива. |
rn | Переименовывание файла внутри архива. |
u | Обновление файлов в архиве. Если файла нет, создает новый. |
x | Извлечение файлов из архива. Пути сохраняются. |
Описание ключей
Часто используемые
Ключ | Описание |
---|---|
-t | Тип архива. По умолчанию создаются файлы в формате 7z. Примеры, -tzip, -tgz |
-ssw | Включить файл в архив, даже если он в данный момент используется. Для резервного копирования очень полезный ключ. |
-mx | Уровень компрессии. 0 - без компрессии (быстро), 9 - самая большая компрессия (медленно). Например, -mx4 |
-p | Пароль для архива. Например, -pStrong2!3paSsword |
-o | Задает директорию, например, в которую будут распакованы файлы. |
-r | Рекурсивное архивирование для папок. Задается числом от 0 (все каталоги) до количества уровней каталогов, которые нужно включить в архив. |
Другие полезные ключи
Ключ | Описание |
---|---|
-sdel | Удалить файлы после создания архива. |
-sfx | Создание самораспаковывающегося sfx-архива. |
-y | Утвердительно ответить на все вопросы, которые может запросить система. |
-x | Исключить файлы или папки из архива. |
-v | Позволяет разбить архив на фрагменты. Если указать -v1g, то архив будет разбит на части по 1 Гб. |
-mmt | Количество потоков процессора, которые можно задействовать для работы программы. -mmt=4 укажет работать в четыре потока. |
-m | Задает метод сжатия. Доступны варианты: - LZMA: базовый метод для сжатия 7z. Быстрое сжатие и декомпрессия. - LZMA2: метод по умолчанию для 7z. Поддерживает несколько процессорных потоков. - PPMd: метод PPMdH Дмитрия Шкарина с небольшими изменениями. Хорошо подходит для текстовых файлов. - BZip2: на основе алгоритма BWT. Также хорош для текстовых файлов. - Deflate: стандартный метод для форматов ZIP и GZip. Сжатие не очень хорошее, но высокая скорость работы. Поддерживает только 32 КБ словаря. - Deflate64: аналогичен Deflate, но с поддержкой 64 КБ словаря. |
Приступаем
В шаблоне создадим кубик Обработка переменных > Положить результат в переменную (обычно я использую переменную DATE)
Добавляем внутрь желаемый формат даты, я для примера буду использовать такой:

После выполнения этого экшена переменная DATE будет содержать дату в таком формате -2022.06.24_17-52. Подробнее про дату можно почитать в этом топике.
Теперь добавляем кубик Свой код > Запуск программы.
В свойствах кубика в разделе Исполняемый фаил вписываем
В разделе Параметры запуска необходимо прописать команду для архивации
Остаётся только указать необходимые данные - что и куда хотим архивировать. Желтым цветом указан путь куда будет сохранён архив. Зелёным отмечена папка, которую архивируем.
Так же подставляем переменную DATE к имени архива, чтобы каждый раз генерировалась текущая дата, иначе если мы никак не уникализируем название фаила, то он будет перезаписываться каждый раз.

Если выполнить этот кубик - откроется консоль, в которой будет виден процесс архивации, после чего будет создан архив.

После успешного создания архива нам напишут Everything is Ok. Данную фразу будем использовать для проверки результата, об этом ниже.
Проверка что всё ок
У нас есть возможность ограничивать время выполнения программы. Когда действие важное и мы не знаем сколько времени точно оно займёт желательно перестраховаться.
Для этого впишем примерное время выполнение например 300 секунд
Теперь необходимо сохранить STD OUT в какую нибудь переменную. В STD OUT находится вывод того что было в консоли в момент создания архива. Я буду хранить в переменной TMP2.
На остальные переменные EXIT CODE и STD ERR можете не обращать внимания, они нам не нужны.
Отмечаем чекбокс на пункте Не показывать окно процесса чтобы не мешало всплывающее окно с консолью. Таким образом получаем:

Теперь выполняя этот кубик в переменной TMP2 будет содержаться необходимая нам информация, остается только спарсить её и обработать.
Создаём кубик Обработка текста > Regex с таким содержанием:

Результат будем сохранять в переменную check
Следующим шагом экшеном Логика > IF, проверяем содержит ли переменная check текст Everything is Ok.
Если содержит то всё выполнилось без ошибок.

В результате полная последовательность действий выглядит вот так:

Отправить комментарий