Добавлено: Сб июн 24, 2017 07:07
addhaloka
Ясно. Тогда ждём исправления.
Ясно. Тогда ждём исправления.
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
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.
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\7-zip\7zG.exe
t -scsUTF-16LE -an -ai@%WL -y
Utils\7-zip\7z.dll,13
Протестировать выбранные в активной панели архивыКод: Выделить всё
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; 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
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;Код: Выделить всё
[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""
Код: Выделить всё
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%Скрипт я и сам смогу сделать (не такой масштабный и изящный, но решающий проблему). Но ради одной не особо используемой команды хотелось "элегантное" решение.Flasher писал(а):Не так интересен по какой причине?
Давно это делал... помню разбирался с этими конструкциями из четырёх процентов, и на тот момент получился рабочий вариант.Flasher писал(а):Также не понял, что у тебя в коде
Теперь понял, коварно задумано в системе. Спасибо. Тогда вопрос снимается.Flasher писал(а):Изменишь формат в региональных — и (без использования громоздких костылей) всё полетит к чертям.
Ну, да. Иноязычные вариации тут и далее как-то разбирали. В батнике я обычно временно ставил 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