КЭНК: перенос файлов в архив 7zip через контекстное меню
У архиватора 7zip под Windows не хватает супер-удобной функции — нельзя легко из Проводника переместить папку или файл в архив. Более того, судя по многочисленным запросам в интернетах, внедрение её создателями не предполагается по какой-то принципиальной причине. Все варианты команд стандартного контекстного меню позволяют сделать архив, но оставляют оригиналы файлов. Даже в GUI самой программы галку «удалять файлы после сжатия» требуется каждый раз устанавливать вручную, и нельзя настройками включить её по умолчанию. Между тем, для меня в работе и быту это довольно частая операция (да и привычка от WinRAR осталась), и хотелось бы её максимально упростить.
Короткая НИР Отдела Малой Автоматизации показала, что никакими штатными средствами сделать это невозможно, зато возможно модифицировать реестр, вписав в контекст файлов и папок нужные команды (тут вообще поле напаханное для творчества, на самом деле).
Будим гуглочёта, затачиваем 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
КЭНК!
Слава Роботам!
Шикарная идея!
Чтобы вместо чёрного экрана с буквами появлялся GUI с процессом, можно вместо 7z.exe прописать 7zG.exe. Жаль только, кнопку «Фоном» придётся нажимать руками, т. к. соответствующий переключатель не реализован, хотя в интернете есть темы, поднимающие этот вопрос.
У Powershell вроде есть какой-то механизм сокрытия окна, но неясно, можно ли вызвать окно Powershell в этом механизме.
Если выбирать между командным окном и гуём, второе наверное даже приятней. Спасибо!