View previous topic :: View next topic |
Author |
Message |
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Fri Sep 28, 2012 20:06 Post subject: Двойное расширение при архивировании |
|
|
Возможно ли сделать по умолчанию, чтобы при упаковке однотипных файлов архив имел такое имя, например: Документы.doc.zip _________________ antabu |
|
Back to top |
|
|
Mellomann
Joined: 07 Sep 2009 Posts: 709
|
(Separately) Posted: Fri Sep 28, 2012 20:28 Post subject: |
|
|
antabu
<путь>\*.*.zip |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Sep 28, 2012 23:21 Post subject: |
|
|
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 |
|
|
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Sat Sep 29, 2012 09:50 Post subject: |
|
|
Спасибо, я имел ввиду упаковку не только .doc но и любых однотипных файлов или любого одного файла. _________________ antabu |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 29, 2012 13:47 Post subject: |
|
|
antabu
Почему именно однотипных? Выделяются любые файлы. Так? Что делать в случае, когда выделены файлы с разными расширениями? |
|
Back to top |
|
|
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Sat Sep 29, 2012 19:04 Post subject: |
|
|
Тогда - по-старому. В этом смысл вопроса. Ведь архиватор анализирует ситуацию, если файл единственный - имя архива его повторяет, если несколько - архив будет с именем папки, из корня диска - pack. _________________ antabu |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 29, 2012 19:18 Post subject: |
|
|
Архиватор не анализирует, есть ли в списке выделенных файлов более одного расширения, как и ТС на это не способен, впрочем. По умолчанию (как было запрошено) этого сделать нельзя, только автоматизацией. Т.е. сперва скрипт анализирует весь список на предмет кол-ва расширений (а это в очень больших списках не моментально происходит, если первых повторных расширений много), потом уже запускает окно архивации (если используется встроенное средство ТС) и уже вписывает какое-то добавочное расширение перед последним в верхнем поле.
А вообще неплохо бы указать, для чего нужен такой подход. Может, есть смысл иначе сделать. |
|
Back to top |
|
|
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Sun Sep 30, 2012 08:05 Post subject: |
|
|
Хотелось сделать просто для удобства хранения архивов, чтобы без распаковки был виден формат файлов. _________________ antabu |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Sep 30, 2012 12:18 Post subject: |
|
|
Понятно. А архивы только в zip-е идут, или ещё какие-то надо? |
|
Back to top |
|
|
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Sun Sep 30, 2012 14:20 Post subject: |
|
|
Чаще других использую zip и 7z. _________________ antabu |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2624
|
(Separately) Posted: Tue Oct 02, 2012 14:38 Post subject: |
|
|
Пока затишье, простенький скрипт с нажатиями:
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Oct 02, 2012 21:03 Post subject: |
|
|
Да всё руки не доходили..
См. путь к 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 |
|
|
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Wed Oct 03, 2012 20:00 Post subject: |
|
|
Спасибо большое!
Путь: %tcc%\Plugins\wcx\7zip\7zip.wcx
Буду разбираться. _________________ antabu |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Oct 04, 2012 19:51 Post subject: |
|
|
antabu wrote: | Путь: %tcc%\Plugins\wcx\7zip\7zip.wcx | При чём тут плагин? Строка 46, путь к утилите 7z.exe
Добавил счётчик и кое-где ускорил. |
|
Back to top |
|
|
antabu
Joined: 15 Sep 2005 Posts: 187 Location: Новосибирск
|
(Separately) Posted: Fri Oct 05, 2012 14:47 Post subject: |
|
|
Действительно...
Так пойдёт?
SZIP = """%tcc%\Plugins\wcx\Total7zip\7zG.exe""" _________________ antabu |
|
Back to top |
|
|
|
|
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
|