← на главную

Алексей Батищев. Заметки обо всём, что происходит со мной и окружающим миром

Избранное в блоге: мои фото- и видеоработы, забрать своё из облаков, КЭНК

КЭНК: перенос файлов в архив 7zip через контекстное меню

У архиватора 7zip под Windows не хватает супер-удобной функции — нельзя легко из Проводника переместить папку или файл в архив. Более того, судя по многочисленным запросам в интернетах, внедрение её создателями не предполагается по какой-то принципиальной причине. Все варианты команд стандартного контекстного меню позволяют сделать архив, но оставляют оригиналы файлов. Даже в GUI самой программы галку «удалять файлы после сжатия» требуется каждый раз устанавливать вручную, и нельзя настройками включить её по умолчанию. Между тем, для меня в работе и быту это довольно частая операция (да и привычка от WinRAR осталась), и хотелось бы её максимально упростить.

Короткая НИР Отдела Малой Автоматизации показала, что никакими штатными средствами сделать это невозможно, зато возможно модифицировать реестр, вписав в контекст файлов и папок нужные команды (тут вообще поле напаханное для творчества, на самом деле).

Контекстное меню курильщика 7zip и контекстное меню 7zip здорового человека

Будим гуглочёта, затачиваем Notepad++

Собственно составляющие задачи:

  • сочинить команду для 7zip с флагом удаления оригиналов (-sdel),
  • понять как передать команде каталог или файл, на котором запущено контекстное меню (ожидаемо, %1)
  • понять где в реестре прописывается команда (см путь ниже, там Directory для каталогов и * для «вообще всего», в данном случае для файлов это работает).

Код ниже, строчка «Move To 7z archive with maximum (7) level compression» понятно может быть любой какой вам удобно, равно как и параметры компрессии (я выбрал mx7, времени роботов не жалко)

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Move To 7z archive with maximum (7) level compression]
[HKEY_CLASSES_ROOT\Directory\shell\Move To 7z archive with maximum (7) level compression\command]
@="\"c:\\Program Files\\7-Zip\\7z.exe\" a \"%1\".7z \"%1\\\" -sdel -mx7"
[HKEY_CLASSES_ROOT\*\shell\Move To 7z archive with maximum (7) level compression]
[HKEY_CLASSES_ROOT\*\shell\Move To 7z archive with maximum (7) level compression\command]
@="\"c:\\Program Files\\7-Zip\\7z.exe\" a \"%1\".7z \"%1\" -sdel -mx7"

Не очень кайфово, что команда вызывает Чорный Экран С Буквами и показывает его, пока архив не сожмётся, но мне это не мешает

Страница с готовым .reg файлом на гитхабе https://github.com/alexbatishchev/kenk-7zip-contextmenu

КЭНК!
Слава Роботам!

1 комментарий
Вячеслав Булынкин 2020

Шикарная идея!
Чтобы вместо чёрного экрана с буквами появлялся GUI с процессом, можно вместо 7z.exe прописать 7zG.exe. Жаль только, кнопку «Фоном» придётся нажимать руками, т. к. соответствующий переключатель не реализован, хотя в интернете есть темы, поднимающие этот вопрос.

У Powershell вроде есть какой-то механизм сокрытия окна, но неясно, можно ли вызвать окно Powershell в этом механизме.

Алексей Батищев 2020

Если выбирать между командным окном и гуём, второе наверное даже приятней. Спасибо!