Работа с 7zip из командной строки

Обновлено: 24.04.2021 Опубликовано: 17.04.2017
Приведенные ниже команды выполняются после перехода в каталог с установленным 7-Zip. Как правило, это:
cd «C:\Program Files\7-Zip»
Распаковать и заархивировать
Распаковка
Синтаксис для распаковки:
* ключ x распаковывает с сохранением каталожной структуры; e — все в одно место.
7z x c:\temp\archive.7z -o»c:\temp\»
* в данном примере мы распакуем файл c:\temp\archive.7z в папку c:\temp
Архивация
Синтаксис для архивирования:
7z a -tzip -mx5 -r0 c:\temp\archive.zip c:\temp
* в данном примере мы создадим zip-архив с уровнем компрессии 5; в архив попадет все содержимое всех каталогов; название для файла c:\temp\archive.zip; запаковываем все содержимое папки c:\temp.
7z a -mx1 c:\temp\archive.7z c:\temp\file1.txt c:\temp\file2.txt c:\temp\file3.txt
* в данном примере мы архивируем файлы c:\temp\file1.txt, c:\temp\file2.txt, c:\temp\file3.txt с низкой компрессией 1; в итоге будет получен архив c:\temp\archive.7z.
Резервное копирование с помощью 7-Zip
Один из самых распространенных примеров использования 7zip из командной строки — резервирование данных.
Для начала переходим в каталог с установленной программой:
cd «C:\Program Files\7-Zip\»
* так как в пути имеется пробел, его необходимо писать в кавычках.
Сама команда выглядит следующим образом:
7z a -tzip -ssw -mx1 -pPassword -r0 C:\Temp\backup.zip C:\Data
* в данном примере мы архивируем содержимое папки C:\Data и сохраняем в виде файла C:\Temp\backup.zip.
* описание ключей смотрите ниже или командой 7z —help.
Полный пример cmd-скрипта для резервного копирования:
set source=»C:\Date»
set destination=»C:\Temp»
set passwd=»Password»
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%dd%-%mm%-%yyyy%
«C:\Program Files\7-Zip\7z.exe» a -tzip -ssw -mx1 -p%passwd% -r0 %destination%\backup_%curdate%.zip %source%
* данный скрипт заархивирует содержимое каталога C:\Data в файл C:\Temp\backup_.zip. Полученный архив будет защищен паролем Password.
* содержимое необходимо сохранить в файле с расширением .cmd или .bat.
Пример Powershell скрипта для резервного копирования:
$source = «C:\Date»
$destination = «C:\Temp»
$passwd = «Password»
$curdate = (Get-Date -UFormat «%d-%m-%Y»)
& «C:\Program Files\7-Zip\7z.exe» a -tzip -ssw -mx1 -p$passwd -r0 $destination\backup_$curdate.zip $source
* данный скрипт также заархивирует содержимое каталога C:\Data в файл C:\Temp\backup_.zip. Полученный архив будет защищен паролем Password.
* содержимое необходимо сохранить в файле с расширением .ps1.
Описание ключей и команд 7z
В синтаксисе работы с 7zip идут команды и ключи.
Описание основных команд
| Команда | Описание |
|---|---|
| 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 КБ словаря. |
Полный список ключей и команд можно получить командой 7z —help.
Примеры
Исключение файлов и папок
Отдельно стоит рассказать про возможность исключения. Есть два варианта ее применения.
Первый — создать список исключений в отдельном файле.
Пример команды 7z:
7z.exe a -tzip -ssw -mx9 -r0 -x@exclus.txt C:\Temp\backup.zip C:\Data
* где exclus.txt — файл с исключениями.
Пример файла с исключениями:
* в данном примере мы исключаем каталог с именем test и все файлы с расширением tmp.
Второй — указать исключение в команде.
7z.exe a -tzip -ssw -mx9 -r0 -xr!Шаблон* C:\Temp\backup.zip C:\Data
Резервирование баз 1С
Данные базы 1С находятся в файлах с расширением .1CD. Для их резервирования используем команду:
7z.exe a -tzip -mmt=2 -ssw -mx5 -r0 C:\Temp\backup.zip D:\Bases_1C\*.1CD
* в данном примере мы будем сжимать все файлы 1CD в архив C:\Temp\backup.zip.
Как заархивировать папку через командную строку
Может тема уже не раз поднималась, но тем не менее.
Необходимо архивировать файл в зип через командную строку. В наличии есть winrar и 7z. Кто может подсказать коммандную строку
winrar английский, 7z только экзешник — поэтому варианты посмотри в help — е не приветствуются)
а что, в консоли 7z /? уже не набрать?
(3) для рара то же, только -? кажется.
точнее winrar a 1cbase
а рар через коммандную строку в зип архивирует разве?
Ключ -AF <тип>— указать формат архива
тип>
С помощью этого ключа можно указывать в командной строке тип архива, который будет создавать WinRAR. Параметр может принимать значения ‘rar’ или ‘zip’.
WinRAR a -afzip arc
Эта команда создаст архив arc.zip.
Данный ключ поддерживается только в WinRAR. Консольная версия RAR создавать архивы ZIP не может.
(7) а куда она его создаст? я раньшне с этим не сталкивался — нельзя ли написать полную строку — чтобы определенный файл в определенном месте архивировался в зип?
(8) можно, лять! пользуйтесь мозгом хоть иногда? не только в рот положиле уже, но и разжевали. посрать еще за вас предлагаете?
(8) вроде не к вам обращаюсь. Если я не знаю как формируется коммандная строка для winrar-а, то откуда мне знать какой параметр используется для прописи адреса архивируемого файла
«C:\Program Files (x86)\WinRAR\rar.exe» M G:\BackUp\Megapolis_alco\NEW\1cv7_.rar G:\Temp\*.* -agDD-MM-YY -ilogG:\BackUp\Megapolis_alco\log\backup.log -k -os -ow -r -m5 -rr20p -s -t -dh -x*.cdx
(10) в винраре — справка — содержание — режим командной строки, мля. все по русски причем. в 7z не сложнее найти
Как заархивировать папку через командную строку
A Добавить файлы в архив
C Добавить архивный комментарий
CH Изменить параметры архива
CV Преобразовать архивы
CW Записать в файл комментарий архива
D Удалить файлы из архива
E Извлечь файлы из архива, игнорируя пути
F Освежить имеющиеся файлы в архиве
I Найти строку в архивах
K Заблокировать архив
M Переместить файлы и папки в архив
R Восстановить повреждённый архив
RC Воссоздать недостающие тома
RN Переименовать файлы в архиве
RR[N] Добавить информацию для восстановления
RV[N] Создать тома для восстановления
S[имя] Преобразовать архив в самораспаковывающийся
S- Удалить SFX-модуль
T Протестировать файлы в архиве
U Обновить файлы в архиве
X Извлечь файлы из архива с полными путями
— Прервать дальнейший поиск ключей в командной строке
-@[+] Запретить [разрешить] списки файлов
-ac Снять атрибут «Архивный» после архивации или извлечения
-ad Добавить к пути назначения имя архива
-af Указать формат архива
-ag[формат] Добавить к имени архива текущую дату и время
-ai Игнорировать файловые атрибуты
-ao Добавить файлы с установленным атрибутом «Архивный»
-ap Установить путь внутри архива
-as Синхронизировать содержимое архива
-av Добавить электронную подпись
-av- Запретить добавление/проверку электронной подписи
-cfg- Игнорировать профиль по умолчанию и переменную окружения
-cl Преобразовать имена файлов в нижний регистр
-cp Выбрать профиль упаковки
-cu Преобразовать имена файлов в верхний регистр
-df Удалить файлы после архивации
-dh Открывать совместно используемые файлы
-dr Удалить файлы в Корзину
-ds Не сортировать файлы при архивации
-dw Уничтожить (затереть) файлы после архивации
-ed Не добавлять пустые папки
-en Не добавлять блок «Конец архива»
-ep Исключить пути из имён
-ep1 Исключить из пути базовую папку
-ep2 Сохранять полные пути файлов
-ep3 Сохранять полные пути, включая букву диска
-e[+] Задать исключение или включение файлов из/в обработку по маске атрибутов
-f Освежить имеющиеся файлы
-hp[пароль] Шифровать и данные, и заголовки файлов
-iadm Запрашивать административный доступ для SFX-архива
-ibck Запустить WinRAR как фоновый процесс в системном лотке
-ieml[.][адрес] Отправить архив по электронной почте
-iicon Указать значок для SFX-модуля
-iimg Указать логотип для SFX-модуля
-ilog[имя] Записывать протокол ошибок в файл
-inul Не выводить сообщения об ошибках
-ioff Выключить компьютер
-k Заблокировать архив
-kb Сохранять на диске файлы, извлечённые с ошибками
-log[формат][=имя] Записывать имена в файл-протокол
-m Установить метод сжатия
-mc Указать дополнительные параметры сжатия
-md Установить размер словаря
-ms[список] Указать типы файлов для архивирования без сжатия
-mt Установить число потоков
-n Включить в обработку только указанный файл
-n@ Включить в обработку только файлы, указанные в файле-списке
-oc Установить NTFS-атрибут «Сжатый»
-or Переименовывать файлы автоматически
-os Сохранить потоки NTFS
-ow Обработать информацию о правах доступа к файлам
-o[+,-] Установить режим перезаписи
-p[пароль] Установить пароль
-r Обрабатывать вложенные папки
-r- Запретить рекурсию (обработку вложенных папок)
-r0 Обрабатывать вложенные папки только по шаблону
-ri Установить приоритет и время простоя
-rr[N] Добавить информацию для восстановления
-rv[N] Создать тома для восстановления
-s Создать непрерывный архив
-s Создать непрерывные группы, используя счётчик файлов
-sc[объекты] Указать набор символов (и объекты)
-se Создать непрерывные группы, используя расширения файлов
-sfx[имя] Создать самораспаковывающийся архив
-sl Обрабатывать файлы размером меньше указанного
-sm Обрабатывать файлы размером больше указанного
-sv Создать независимые непрерывные тома
-sv- Создать зависимые непрерывные тома
-s- Запретить создание непрерывных архивов
-t Протестировать файлы после архивирования
-ta Обрабатывать файлы, изменённые после указанной даты
-tb Обрабатывать файлы, изменённые до указанной даты
-tk Сохранять исходное время архива
-tl Установить время архива по самому новому файлу
-tn Обрабатывать файлы не старее, чем указанный период времени
-to Обрабатывать файлы более старые, чем указанный период времени
-ts Сохранить/восстановить время файлов (модификации, создания, последнего доступа)
-u Обновить файлы
-v[k,b,f,m,M,g,G] Создать многотомный архив
-vd Очищать сменный диск перед архивацией на него
-ver[n] Управление версиями файлов
-vn Использовать старую схему именования томов
-vp Делать паузу перед каждым томом
-w Задать папку для временных файлов
-x Не обрабатывать указанный файл
-x@ Не обрабатывать файлы, указанные в файле-списке
-y Подразумевать ответ «Да» на все запросы
-z Прочитать комментарий архива из файла
Коды возврата WinRAR
В случае успешного окончания операции WinRAR завершает работу с нулевым (0) кодом возврата. Если код возврата отличается от нулевого, это говорит о том, что произошла какая-то ошибка.
Код возврата
Описание
0 Операция успешно завершена.
1 Предупреждение. Произошли некритические ошибки.
2 Произошла критическая ошибка.
3 Неверная контрольная сумма CRC32. Данные повреждены.
4 Предпринята попытка изменить заблокированный архив.
5 Произошла ошибка записи на диск.
6 Произошла ошибка открытия файла.
7 Ошибка при указании параметра в командной строке.
8 Недостаточно памяти для выполнения операции.
9 Ошибка при создании файла.
10 Нет файлов, удовлетворяющих указанной маске, и параметров.
255 Операция была прервана пользователем.
——-
Хочу ли я — Могу ли я — Говно ли я — Магнолия
Последний раз редактировалось yurfed, 10-04-2015 в 00:11 .
Как заархивировать файлы с относительными путями вместо абсолютных?

Задача заархивировать содержимое папки D:\OSPanel\domains\localhost\ в архив zip и поместить этот архив на рабочий стол.
Все так и происходит. Но архивания происходит с соблюдением всех путей
А мне нужно чтоб в архиве были только папки и файлы которые находятся в папке localhost
- Вопрос задан более трёх лет назад
- 881 просмотр
Комментировать
Решения вопроса 1
Первой строкой вам нужно перейти в эту папку (команда cd ), а потом уже добавлять содержимое в архив.
Ответ написан более трёх лет назад
Нравится 1 2 комментария
newaitix @newaitix Автор вопроса
Нет не работает такой вариант уже пробовал
@echo off cd "D:\OSPanel\domains\logreel.com\resource\" "%ProgramFiles%\WinRAR\WinRAR.exe" a -r "C:\Users\newai\Desktop\%var%.zip" "D:\OSPanel\domains\logreel.com\resource\*"
newaitix, «не работает» как именно?
Вы путь до архивируемых файлов на относительный поменяйте. Вы же уже в нужном каталоге.