Кнопки для 7-Zip
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
addhaloka
Похоже, что другого решения не будет, т. к. нужно одновременно паковать файлы с наличием - и @ спереди.
Похоже, что другого решения не будет, т. к. нужно одновременно паковать файлы с наличием - и @ спереди.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher писал(а):А в ответ получил ту же рекомендацию...
Ясно. Значит, исправления не будет, хотя думал, что это обещание исправить:Похоже, что другого решения не будет
Может, в будущих версиях? Хотя гадать смысла нет...You can get @filename as name of archive or name of file in archive.
So I've disabled @ parsing after -- in 17.00.
But commands for FAR still use it after --.
It's my error.
the problem is more complicated.
I'll think about best way to fix it.
Если для WinRAR не сделать тестирование сразу всех архивов (ссылка), тогда как можно протестировать все выбранные архивы через 7zG?
addhaloka
Это обещание подумать, а не исправить. После раздумий по указанной мной причине другого решения не нашлось.
Nick
Не заметил.
Это обещание подумать, а не исправить. После раздумий по указанной мной причине другого решения не нашлось.
Nick
Не заметил.
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\7-zip\7zG.exe
t -scsUTF-16LE -an -ai@%WL -y
Utils\7-zip\7z.dll,13
Протестировать выбранные в активной панели архивыАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- LonerD
- Сообщения: 1173
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
AutoHotkey скрипт для распаковки выделенных файлов с помощью архиватора 7-Zip (всё в текущий каталог или же для каждого архива будет создаваться отдельный каталог с именем файла).
Предусмотрена проверка на наличие точки в конце каталога куда производится распаковка.
Можно пытаться распаковывать как все файлы (архиватор будет выводить стандартное окно ошибки если не может осилить распаковку), так и только файлов из списка поддерживаемых форматов (список взят из справки 7-Zip).
Ссылка на скрипт.
Примерный вариант параметров
%WL "%%commander_path%%\Plugins\arc\7-Zip\7zG.exe" 1 1 u
Unpack selected archives with 7-Zip
%WL "%%commander_path%%\Plugins\arc\7-Zip\7zG.exe" 0 1 u
Unpack selected archives with 7-Zip to current directory
Предусмотрена проверка на наличие точки в конце каталога куда производится распаковка.
Можно пытаться распаковывать как все файлы (архиватор будет выводить стандартное окно ошибки если не может осилить распаковку), так и только файлов из списка поддерживаемых форматов (список взят из справки 7-Zip).
Ссылка на скрипт.
Примерный вариант параметров
%WL "%%commander_path%%\Plugins\arc\7-Zip\7zG.exe" 1 1 u
Unpack selected archives with 7-Zip
%WL "%%commander_path%%\Plugins\arc\7-Zip\7zG.exe" 0 1 u
Unpack selected archives with 7-Zip to current directory
Код: Выделить всё
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander DreamLair ;
; Script: Unpack Selected Archives with 7-Zip ;
; Script version: 1.0 (2018.09.14) ;
; Script author: LonerD ;
; Site: https://dreamlair.net ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Parameters: ;
; 1) %WL (required) ;
; 2) Path to archiver (required) ;
; ("%%commander_path%%\Plugins\arc\7-Zip\7zG.exe") ;
; 3) Unpack to subdir (1|0) ;
; 4) Unpack only supported extensions (1|0) ;
; 5) Mode (a|s|u - overwrite all|skip|rename) ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
#NoEnv
#NoTrayIcon
#SingleInstance ignore
if not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
ExitApp
Filelist = %1%
7ZipPath = %2%
ToSubdir = %3%
Supported = %4%
Overwrite = %5%
if 0 < 5
Overwrite = u
if 0 < 4
Supported = 1
if 0 < 3
ToSubdir := 1
if 0 < 2
ExitApp
EnvGet, commander_path, commander_path
Transform, 7ZipPath, Deref, % 7ZipPath
7ZipPath := ExpandEnvVars (7ZipPath)
if Overwrite not in a,s,u
Overwrite:= s
if Supported not in 0,1
Supported:= 1
if ( Supported = "1" )
SupportedExt := "7z,7zip,7-zip,exe,bz2,bzip2,tbz2,tbz,gz,gzip,tgz,tar,wim,swm,esd,xz,txz,zip,zipx,jar,apk,xpi,odt,ods,docx,xlsx,epub,apm,ar,a,deb,lib,arj,cab,chm,chw,chi,chq,msi,msp,doc,xls,ppt,cpio,cramfs,dmg,ext,ext2,ext3,ext4,fat,hfs,hfsx,hxs,hxi,hxr,hxq,hxw,lit,ihex,iso,img,lha,lzh,lzma,mbr,mslz,mub,nsis,ntfs,rar,r00,rpm,ppmd,qcow,qcow2,qcow2c,squashfs,udf,scap,uefif,vdi,vhd,vmdk,xar,pkg,z,taz"
Loop, Read, % Filelist
{
TargetFile = %A_LoopReadLine%
SplitPath, TargetFile, FileName, FileDir, FileExt, FileNameNoExt
if not InStr(FileExist(TargetFile), "D")
{
if ( ToSubdir = "0" )
TargetPath := FileDir . "\"
else
TargetPath := FileDir . "\" . FileNameNoExt . "\"
While InStr(TargetPath, ".\")
TargetPath := StrReplace(TargetPath, ".\", "\")
if ( Supported = "0" )
RunWait, %7ZipPath% x -scsUTF-8 -ao%Overwrite% -o"%TargetPath%" -- "%TargetFile%"
else if FileExt in % SupportedExt
RunWait, %7ZipPath% x -scsUTF-8 -ao%Overwrite% -o"%TargetPath%" -- "%TargetFile%"
}
}
ExitApp
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
ExpandEnvVars(ppath)
{
VarSetCapacity(Dest, 2000)
DllCall("ExpandEnvironmentStrings", Str, ppath, Str, Dest, Int, 1998)
Return, Dest
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;Windows 11 | TC DreamLair eternal pre-α
LonerD
Что-то тебя не в тот раздел занесло. Мухи (кнопки) отдельно, котлеты (скрипты) отдельно. Мой усовершенствованный распаковщик пропустил, видимо?
Что-то тебя не в тот раздел занесло. Мухи (кнопки) отдельно, котлеты (скрипты) отдельно. Мой усовершенствованный распаковщик пропустил, видимо?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- LonerD
- Сообщения: 1173
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Flasher
Имеется команда
Подскажи, пожалуйста, что в ней можно исправить/оптимизировать, заменить %P%N на @%WL и добавить отображение даты в имени в виде [2019.03.06-19.00.00] ?
Имеется команда
Код: Выделить всё
[em_7Zip_crypt]
cmd=%commander_path%\Plugins\exe\AskParam.exe
param=/c"7-Zip Archive with Date" /u"-mx9 -m0=LZMA2 -mse -ssw -scsUTF-16LE -y" /t"-mx9 -m0=LZMA -mse -ssw -scsUTF-16LE -y" /p"Compression Parameters" /u"pass" /p"Password" /s0 %%comspec%% /c setlocal & for /f "tokens=1-6 delims=:., " %%%%a in ('echo %%%%date%%%% %%%%time:~0,8%%%%') do "%%%%commander_path%%%%\Plugins\arc\7-Zip\7zG.exe" a -t7z %%1 -p%%2 -mhe "%P%N [%%%%c.%%%%b.%%%%a_%%%%d.%%%%e.%%%%f].7z" ""%P%N""
Последний раз редактировалось LonerD Чт мар 07, 2019 02:21, всего редактировалось 3 раза.
Windows 11 | TC DreamLair eternal pre-α
LonerD
Есть смысл подвязать этот скрипт. Если устроит в части даты, здесь подскажу что исправить в 37 строке для указанного формата (на cmd c учётом региональных настроек это исполнять нецелесообразно).
Есть смысл подвязать этот скрипт. Если устроит в части даты, здесь подскажу что исправить в 37 строке для указанного формата (на cmd c учётом региональных настроек это исполнять нецелесообразно).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- LonerD
- Сообщения: 1173
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Flasher
Скрипт не так интересен. Пытаюсь понять где ошибка в дате. Подправил запись команды, вроде раньше в таком виде работала, а сейчас галиматья вместо даты... И при замене на @%WL если выбрать несколько файлов - выбивается ошибка (список удаляется до того, как архиватор отработает).
Скрипт не так интересен. Пытаюсь понять где ошибка в дате. Подправил запись команды, вроде раньше в таком виде работала, а сейчас галиматья вместо даты... И при замене на @%WL если выбрать несколько файлов - выбивается ошибка (список удаляется до того, как архиватор отработает).
Windows 11 | TC DreamLair eternal pre-α
LonerD
Не так интересен по какой причине? При том, что он учитывает список исключений, добавляет счётчик в имя при необходимости и работает длинными (260+) путями.
Про дату я уже написал. Изменишь формат в региональных — и (без использования громоздких костылей) всё полетит к чертям. На PowerShell сделать ещё можно.
И в твоём случае не было смысла задействовать for:, когда есть вариант без оного:
Также не понял, что у тебя в коде делает setlocal и двойное указание %P%N без кавычек и с ними, ещё при том, что по синтаксису имя архива указывается после команды a.
Не так интересен по какой причине? При том, что он учитывает список исключений, добавляет счётчик в имя при необходимости и работает длинными (260+) путями.
Про дату я уже написал. Изменишь формат в региональных — и (без использования громоздких костылей) всё полетит к чертям. На PowerShell сделать ещё можно.
И в твоём случае не было смысла задействовать for:
Код: Выделить всё
for /f "tokens=1-6 delims=:., " %a in ('echo %date% %time:~0,8%') do echo %c.%b.%a_%d.%e.%fКод: Выделить всё
echo %date:~6,4%.%date:~3,2%.%date:~,2%_%time:~,2%.%time:~3,2%.%time:~6,2%Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- LonerD
- Сообщения: 1173
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Flasher
Скрипт я и сам смогу сделать (не такой масштабный и изящный, но решающий проблему). Но ради одной не особо используемой команды хотелось "элегантное" решение.Flasher писал(а):Не так интересен по какой причине?
Давно это делал... помню разбирался с этими конструкциями из четырёх процентов, и на тот момент получился рабочий вариант.Flasher писал(а):Также не понял, что у тебя в коде
Теперь понял, коварно задумано в системе. Спасибо. Тогда вопрос снимается.Flasher писал(а):Изменишь формат в региональных — и (без использования громоздких костылей) всё полетит к чертям.
Windows 11 | TC DreamLair eternal pre-α
Ну, да. Иноязычные вариации тут и далее как-то разбирали. В батнике я обычно временно ставил dd.MM.yyyy в HKCU\Control Panel\International\sShortDate, т.к. это куда быстрее, чем парсинг wmic os get localdatetime.LonerD писал(а):Теперь понял, коварно задумано в системе.
Хотя, с другой стороны, с ним будет короче:
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /c"7-Zip Archive with Date" /u"LZMA2" /t"LZMA" /p"Compression Parameters" /u"pass" /p"Password" /s0 %ComSpec% /v:on /q/c "(for /f "skip=1" %%# in ('wmic os get localdatetime')
do >nul set /a c+=1 &set !c!=%%%%~n#)&&"!COMMANDER_PATH!\Plugins\arc\7-Zip\7z.exe" a ""%N" [!1:~,4!.!1:~4,2!.!1:~6,2!_!1:~8,2!.!1:~10,2!.!1:~12!].7z" -m0=%%1 -p%%2 -mx -mhe -ssw -y -scsUTF-16LE @%WL"
Plugins\arc\7-Zip\7z.dll
Упаковка выбранного в "<CurrentName> [yyyy.MM.dd_HH.mm.ss].7z" с выбором алгоритма LZMA/2Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.