Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Двойное расширение при архивировании
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Fri Sep 28, 2012 20:06    Post subject: Двойное расширение при архивировании Reply with quote

Возможно ли сделать по умолчанию, чтобы при упаковке однотипных файлов архив имел такое имя, например: Документы.doc.zip
_________________
antabu
Back to top
View user's profile Send private message
Mellomann



Joined: 07 Sep 2009
Posts: 709

Post (Separately) Posted: Fri Sep 28, 2012 20:28    Post subject: Reply with quote

antabu
<путь>\*.*.zip
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Sep 28, 2012 23:21    Post subject: Reply with quote

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 > Настройки компрессии и параметры работы с архивами.)
Back to top
View user's profile Send private message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Sat Sep 29, 2012 09:50    Post subject: Reply with quote

Спасибо, я имел ввиду упаковку не только .doc но и любых однотипных файлов или любого одного файла.
_________________
antabu
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Sep 29, 2012 13:47    Post subject: Reply with quote

antabu
Почему именно однотипных? Выделяются любые файлы. Так? Что делать в случае, когда выделены файлы с разными расширениями?
Back to top
View user's profile Send private message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Sat Sep 29, 2012 19:04    Post subject: Reply with quote

Тогда - по-старому. В этом смысл вопроса. Ведь архиватор анализирует ситуацию, если файл единственный - имя архива его повторяет, если несколько - архив будет с именем папки, из корня диска - pack.
_________________
antabu
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Sep 29, 2012 19:18    Post subject: Reply with quote

Архиватор не анализирует, есть ли в списке выделенных файлов более одного расширения, как и ТС на это не способен, впрочем. По умолчанию (как было запрошено) этого сделать нельзя, только автоматизацией. Т.е. сперва скрипт анализирует весь список на предмет кол-ва расширений (а это в очень больших списках не моментально происходит, если первых повторных расширений много), потом уже запускает окно архивации (если используется встроенное средство ТС) и уже вписывает какое-то добавочное расширение перед последним в верхнем поле.

А вообще неплохо бы указать, для чего нужен такой подход. Может, есть смысл иначе сделать.
Back to top
View user's profile Send private message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Sun Sep 30, 2012 08:05    Post subject: Reply with quote

Хотелось сделать просто для удобства хранения архивов, чтобы без распаковки был виден формат файлов.
_________________
antabu
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Sep 30, 2012 12:18    Post subject: Reply with quote

Понятно. А архивы только в zip-е идут, или ещё какие-то надо?
Back to top
View user's profile Send private message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Sun Sep 30, 2012 14:20    Post subject: Reply with quote

Чаще других использую zip и 7z.
_________________
antabu
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2624

Post (Separately) Posted: Tue Oct 02, 2012 14:38    Post subject: Reply with quote

Пока затишье, простенький скрипт с нажатиями:
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
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Oct 02, 2012 21:03    Post subject: Reply with quote

Да всё руки не доходили..
См. путь к 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
Back to top
View user's profile Send private message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Wed Oct 03, 2012 20:00    Post subject: Reply with quote

Спасибо большое!
Путь: %tcc%\Plugins\wcx\7zip\7zip.wcx
Буду разбираться.
_________________
antabu
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Oct 04, 2012 19:51    Post subject: Reply with quote

antabu wrote:
Путь: %tcc%\Plugins\wcx\7zip\7zip.wcx
При чём тут плагин? Строка 46, путь к утилите 7z.exe

Добавил счётчик и кое-где ускорил.
Back to top
View user's profile Send private message
antabu



Joined: 15 Sep 2005
Posts: 187
Location: Новосибирск

Post (Separately) Posted: Fri Oct 05, 2012 14:47    Post subject: Reply with quote

Действительно...
Так пойдёт?
SZIP = """%tcc%\Plugins\wcx\Total7zip\7zG.exe"""
_________________
antabu
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group