Двойное расширение при архивировании
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Двойное расширение при архивировании Author: antabuLocation: Новосибирск PostPosted: Fri Sep 28, 2012 20:06
    —
Возможно ли сделать по умолчанию, чтобы при упаковке однотипных файлов архив имел такое имя, например: Документы.doc.zip

#2:  Author: Mellomann PostPosted: Fri Sep 28, 2012 20:28
    —
antabu
<путь>\*.*.zip

#3:  Author: FlasherLocation: Москва PostPosted: Fri Sep 28, 2012 23:21
    —
antabu
В секции PackerPlugins ставишь
doc=303,%COMMANDER_PATH%\Plugins\wcx\Total7zip\Total7zip.wcx

потом в total7zip.xml

Code:
      <format description="zip" guid="{23170F69-40C1-278A-1000-000110010000}">
         ....
         <ext val="doc" />

Для doc в xml нужно расписать свои настройки (см. read_me > Настройки компрессии и параметры работы с архивами.)

#4:  Author: antabuLocation: Новосибирск PostPosted: Sat Sep 29, 2012 09:50
    —
Спасибо, я имел ввиду упаковку не только .doc но и любых однотипных файлов или любого одного файла.

#5:  Author: FlasherLocation: Москва PostPosted: Sat Sep 29, 2012 13:47
    —
antabu
Почему именно однотипных? Выделяются любые файлы. Так? Что делать в случае, когда выделены файлы с разными расширениями?

#6:  Author: antabuLocation: Новосибирск PostPosted: Sat Sep 29, 2012 19:04
    —
Тогда - по-старому. В этом смысл вопроса. Ведь архиватор анализирует ситуацию, если файл единственный - имя архива его повторяет, если несколько - архив будет с именем папки, из корня диска - pack.

#7:  Author: FlasherLocation: Москва PostPosted: Sat Sep 29, 2012 19:18
    —
Архиватор не анализирует, есть ли в списке выделенных файлов более одного расширения, как и ТС на это не способен, впрочем. По умолчанию (как было запрошено) этого сделать нельзя, только автоматизацией. Т.е. сперва скрипт анализирует весь список на предмет кол-ва расширений (а это в очень больших списках не моментально происходит, если первых повторных расширений много), потом уже запускает окно архивации (если используется встроенное средство ТС) и уже вписывает какое-то добавочное расширение перед последним в верхнем поле.

А вообще неплохо бы указать, для чего нужен такой подход. Может, есть смысл иначе сделать.

#8:  Author: antabuLocation: Новосибирск PostPosted: Sun Sep 30, 2012 08:05
    —
Хотелось сделать просто для удобства хранения архивов, чтобы без распаковки был виден формат файлов.

#9:  Author: FlasherLocation: Москва PostPosted: Sun Sep 30, 2012 12:18
    —
Понятно. А архивы только в zip-е идут, или ещё какие-то надо?

#10:  Author: antabuLocation: Новосибирск PostPosted: Sun Sep 30, 2012 14:20
    —
Чаще других использую zip и 7z.

#11:  Author: sa PostPosted: Tue Oct 02, 2012 14:38
    —
Пока затишье, простенький скрипт с нажатиями:
Code:
'======================================================================================
' Описание:  Упаковка файлов с добавлением расширения файла под курсором к имени архива
' Параметры:  %E%Z
' Требования: В системе настроить переключение на английский на Ctrl+Shift+1 (либо
'            запускать скрипт при английской раскладке клавиатуры)
'======================================================================================
Dim WSH
Set WSH = WScript.CreateObject("WScript.Shell")
WSH.SendKeys "^+1"     ' переключение на английский: Ctrl+Shift+1
WSH.SendKeys "%{F5}"   ' вызов диалога упаковки: Alt+F5
If WScript.Arguments.Count > 0 Then WSH.SendKeys "{END}^{LEFT}" _
   & (WScript.Arguments(0)) & ".{END}"
Set WSH = Nothing
Wscript.Quit
Add
Для обеспечения упаковки файлов из архивов добавил в шапку скрипта параметр %Z.


Last edited by sa on Fri Oct 05, 2012 14:38; edited 1 time in total

#12:  Author: FlasherLocation: Москва PostPosted: Tue Oct 02, 2012 21:03
    —
Да всё руки не доходили..
См. путь к 7-zip:
Code:
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Упаковать выделенное в архив(ы) с двойным расширением

' Параметры (! - обязательный):
'  1. <путь к списку элементов> (!)
'  2. "<путь назначения>\" (!)
'  3. <расширение архива> (!)
'  4. <не разделять/разделять по группам расширений: 0/1>
'  5. <параметры упаковки>

' Примеры:
'  1) %L "%T" zip 0
'  2) %L "%P" exe 1 -sfx7zCon.sfx
'  3) %L "%T" ZIP 1 -mx9 -mm=Deflate -mfb=258 -mcu=on -pSECRET
'  4) %L "%T" 7Z 1 -mx9 -m0=LZMA2 -ssw -pПАРОЛЬ

' Автор - Flasher ©
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
With WScript.Arguments
  On Error Resume Next
  List = .Item(0) : Path = .Item(1) : Ext = .Item(2)
  If Err.Number > 0 Then
    MsgBox  "Не выбраны элементы для упаковки!", 48, Space(25) & "Пакетная упаковка"
    Wscript.Quit
  End If : On Error GoTo 0
  L = vbnewline : C = .Count : If C > 3 Then Flag = .Item(3)
  If Len(List) > 0 And C < 4 Then
    MsgBox  "Не выполнено условие:" & L & "минимальное число параметров - 4",_
    vbExclamation, Space(23) & "Пакетная упаковка"
    Wscript.Quit
  End If
  If C > 4 Then
    For i = 4 to C - 1 : S = S & " " & .Item(i) : Next
  End If
End With

Exts = "7Z | 7ZIP | ZIP | GZIP | BZIP2 | XZ | EXE | WIM"
If InStr(Exts, Ucase(Ext)) = 0 Then
  MsgBox "Указанное расширение """ & UCase(Ext) & """ не поддерживается!" & L &_
  L & "Список поддерживаемых расширений:" & L & Exts, 48,_
  Space(38) & "Пакетная упаковка" : WScript.Quit
End If : Const M = 1

Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
SZIP = """%COMMANDER_PATH%\Utils\7-Zip\7z.exe"""

Set TF = FSO.OpenTextFile(List, 1)
Mass = Split(Replace(TF.ReadAll, L, "|" & L), L)
TF.Close : Set TF = Nothing
F = Left(Mass(0), Len(Mass(0)) - 1) : WD = FSO.GetParentFolderName(F)
If InStrRev(Right(WD, 2), ":") Then BN = "pack" Else BN = FSO.GetFileName(WD)
PF = Path & BN & "." : Ext1 = FSO.GetExtensionName(F)
Name = PF & Ext1 & "." & Ext
Filt = Filter(Mass, "." & Ext1 & "|", True, 1)
If Ubound(Filt) + 1 = Ubound(Mass) Then
  Pack SZIP, Path, Name, S, List, Ext
ElseIf FSO.FolderExists(F) Or Flag = 0 Then
  Name = PF & Ext
  Pack SZIP, Path, Name, S, List, Ext
ElseIf Flag = 1 Then
  Set Dict = CreateObject("Scripting.Dictionary")
  For Each F in Mass
    If F <> "" Then
      F = Left(F, Len(F) - 1) : Ext1 = FSO.GetExtensionName(F)
      Name = PF & Ext1 & "." & Ext
      If Not Dict.Exists(Ext1) Then
        Dict.Add Ext1, "" : Set TF = FSO.OpenTextFile(List, 2, True)
        TF.Write Replace(Join(Filter(Mass, "." & Ext1 & "|", True, 1), L), "|", "")
        TF.Close : Set TF = Nothing : Pack SZIP, Path, Name, S, List, Ext
      End If
    End If
  Next : Dict.RemoveAll : Set Dict = Nothing
End If : WSH.Popup "Упаковка завершена!", 1.4, "Результат", 64
Set FSO = Nothing : Set WSH = Nothing : WScript.Quit

Sub Pack(SZ, Dir, NM, SS, File, Ex)
  OF = NM
  Do While FSO.FileExists(Dir & FSO.GetFileName(NM))
    n = n + 1
    If n < 10^M Then PostFix = Right(String(M, "0") & n, M) Else PostFix = n
    NM = Dir & FSO.GetBaseName(OF) & " (" & PostFix & ")." & Ex
  Loop : WSH.Run SZ & " a """ & NM & """" & SS & " -y @""" & File & """ -scsWIN", 0, True
End Sub


Last edited by Flasher on Thu Oct 04, 2012 19:50; edited 1 time in total

#13:  Author: antabuLocation: Новосибирск PostPosted: Wed Oct 03, 2012 20:00
    —
Спасибо большое!
Путь: %tcc%\Plugins\wcx\7zip\7zip.wcx
Буду разбираться.

#14:  Author: FlasherLocation: Москва PostPosted: Thu Oct 04, 2012 19:51
    —
antabu wrote:
Путь: %tcc%\Plugins\wcx\7zip\7zip.wcx
При чём тут плагин? Строка 46, путь к утилите 7z.exe

Добавил счётчик и кое-где ускорил.

#15:  Author: antabuLocation: Новосибирск PostPosted: Fri Oct 05, 2012 14:47
    —
Действительно...
Так пойдёт?
SZIP = """%tcc%\Plugins\wcx\Total7zip\7zG.exe"""



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3  Next  :| |:
Page 1 of 3

Powered by phpBB © 2001, 2005 phpBB Group