Здесь будет рассматриваться работа Total Commander с различными внешними архиваторами, передача им определенных параметров и т.д.
Для простоты и удобства указания относительного пути к объекту предлагаю ввести некую условную переменную %pp%. Эта переменная никоим образом не относится к системным переменным или внутренним переменным Total Commander. Повторю, она будет использоваться только в настоящем форуме для простоты и удобства указания условного пути к объекту.
Этим условным путем может быть любой абсолютный или относительный путь к объекту вашей системы, который вы, как предполагается, в дальнейшем, исправите на свой.
Итак, назову эту переменную для простоты и краткости %pp% (от %program_path% — путь к программе). Таким образом, конструкция полного пути к объекту будет выглядеть следующим образом
Кнопка для создания зашифрованного RaR-архива из выделенных объектов. Эта кнопка писалась очень длительное время. Основные задачи, поставленные перед кнопкой были таковы: архивировать выделенные объекты (файлы и/или папки) одним нажатием, получая в имени будущего архива родительский каталог и дату со временем такой структуры ParentDirName_[year.month.day-hours.minutes.seconds]. При этом процесс должен идти в фоне, не мешая дальнейшей работе в Total Commander. Камнем преткновения перед выкладыванием этой кнопки послужили несколько символов в именах и путях, а именно, &, ^ и !, которые не удавалось ранее передать с помощью командного интерпретатора. Теперь это позади. Принимайте и пользуйте. Все поставленные задачи на данный момент решены. Будьте внимательны: при паковке объектов, в именах которых есть юникод-символы, при добавлении в архив они будут пропущены.
Если не нужны пароль и дата со временем, удаляем их из параметров. Для создания самораспаковывающихся архивов создаем схожую кнопку и добавляем параметр -sfx%%pp%%\Default.SFX Если вы привыкли к WinRAR, вы можете использовать его вместо консольной версии, это не принципиально. Если Вас, по каким-либо причинам, не устаивает корректность выполнения команды, рекомендую воспользоваться скриптом.
Соответственно, схожая кнопка для создания архивов 7-zip. Задача написания данной кнопки была такова: привести ее к работе с архивами, схожей с RaR, то есть создание в фоновом процессе из выделенных объектов зашифрованного архива с именем, содержащим родительский каталог и текущие дату и время, а также, упразднения архиваторного плагина 7-zip. Потестируйте удобство работы данной кнопки и степень сжатия ей, возможно это вас заставит подумать об отказе от архиваторного плагина 7-zip для TC, учитывая тот факт, что TC у вас во время архивации не будет мёртвым и не отвиснет, а также его можно будет перезапускать и, пожалуй, самое главное — продолжать в нём работать.
Для создания самораспаковывающихся архивов создаем схожую кнопку и добавляем параметр -sfx%%pp%%\7z.sfx Ну и, соответственно, кнопка для распаковки 7-zip архивов и не только их... подробнее см справку 7-zip.
Код:
TOTALCMD#BAR#DATA
cmd/c title 7z-unpacking...&%pp%\7z x -aoa
-o"%O" "%O.%E"
%pp%\7z.sfx
Распаковать 7z-ом
1
Для поддержки распаковки многих типов архивов положите рядом с файлом 7z.exe (7za.exe) библиотеку 7z.dll (7za.dll).
Список форматов для распаковки
7z (7z), ZIP (zip), GZIP (gz gzip tgz), BZIP2 (bz2 bzip2 tbz2 tbz), TAR (tar), RAR (rar), CAB (cab), ARJ (arj), Z (z taz), CPIO (cpio), RPM (rpm), DEB (deb), LZH (lzh lha), SPLIT (001 002 ...), CHM (chm chw hxs), ISO (iso), COMPOUND (msi doc xls ppt), WIM (wim swm), NSIS (exe)
Более новые версии архиватора поддерживают работу с кирилицей, поэтому можно удалить параметр -scswin Если Вас, по каким-либо причинам, не устаивает корректность выполнения команды, рекомендую воспользоваться скриптом.
Если не нужен пароль, убираем параметр. Для создания самораспаковывающихся архивов создаем схожую кнопку и добавляем параметр -sfx%%commander_path%%\SFXHEAD.SFX Точно также можно создавать многие типы архивов, поддерживаемых этим замечательным и бесплатным архиватором.
Список форматов для сжатия
7z (7z), ZIP (zip), GZIP (gz gzip tgz), BZIP2 (bz2 bzip2 tbz2 tbz), TAR (tar)
Если Вас, по каким-либо причинам, не устаивает корректность выполнения команды, рекомендую воспользоваться скриптом.