View previous topic :: View next topic |
Author |
Message |
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Tue Jan 27, 2015 14:09 Post subject: |
|
|
Flasher
Не планируется ли обновление скрипта с учетом упаковки _files? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jan 27, 2015 23:18 Post subject: |
|
|
Планируется: Code: | '••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Опциональная упаковка выбранных файлов или файлов в структуре
' выбранных каталогов (htm(l) упаковываются вместе со своими каталогами)
' Параметры (! - обязательный):
' 1. <путь к списку элементов в Юникоде> (!)
' 2. "<путь назначения>\" (!)
' а) если добавить в конец точку, то все файлы - в один архив;
' б) если написать точку, то файлы каждой папки - в одноименный архив;
' в) если написать "", то - рядом с исходником;
' г) если написать "имя папки", то - в папку рядом с исходником;
' имя папки должно быть уникальным для выбранной структуры.
' 3. <расширение архива> (!)
' 4. *.<ext1>;*.<ext2>;*.<ext3> (маски расширений файлов)
' 5. <параметры упаковки>
' Примеры:
' 1) %WL "" zip
' 2) %WL "%P" RAR
' 3) "C:\My Files\List.txt" 1 exe "" -sfx7z.sfx
' 4) %WL . 7z "" -mx9 -m0=LZMA2:fb273 -m1=LZMA2:lc4
' 5) %WL "" rar "" -m5 -s -rr5p -pPASSWORD -ag_DD.MM.YY
' 6) %WL "%T" ZIP "" -mx9 -mm=Deflate -mfb=258 -mcu=on -pSECRET
' 7) %WL "%T." 7Z *.mht;*.htm;*.html -mx9 -m0=LZMA2 -ssw -pПАРОЛЬ
' Автор - Flasher ©
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Option Explicit
Dim SZIP, RAR, Title, A, C, P, Ext, List, Filt, Arch, Exts, E,_
i, S, WSH, ShA, FSO, F, T, Text, Folder, Test, Items, Fl, Fd,_
File, Extn, FF, Ex, Path, PP, Name, l, PostFix, Pr, Param
'••••••••• Путь к утилите 7z.exe ••••••••••••
SZIP = "%COMMANDER_PATH%\Utils\7-Zip\7z.exe"
'••••••••• Путь к утилите rar.exe •••••••••••
RAR = "%COMMANDER_PATH%\Plugins\arc\rar.exe"
'••••••••••••••••••••••••••••••••••••••••••••
Title = "Рекурсивная пофайловая упаковка"
Set A = WScript.Arguments
C = A.Count : If C = 0 Then WScript.Quit
List = A.Item(0) : P = A.Item(1) : Ext = A.Item(2)
If C > 3 Then Filt = A.Item(3)
If Len(List) > 0 And A.Count < 3 Then
MsgBox "Не выполнено условие:" & vbLf & "минимальное число параметров - 3",_
vbExclamation, " " & Title : Wscript.Quit
End If
Exts = "7Z | 7ZIP | ZIP | RAR | GZIP | BZIP2 | XZ | EXE | WIM"
If InStr(" " & Exts & " ", " " & Ucase(Ext) & " ") = 0 Then
MsgBox "Указанное расширение """ & UCase(Ext) & """ не поддерживается!" &_
vbLf & vbLf & "Список поддерживаемых расширений:" &_
vbLf & Exts, 48, Space(20) & Title : WScript.Quit
End If
If C > 5 Then For i = 5 To C - 1 : S = S & " " & A(i) : Next End If
If InStr(P, ":") And Right(P, 1) = "." Then
Arch = Trim(InputBox(String(5, vbLf) & "Введите базовое имя архива:",_
Space(18) & Title, "Новый_архив")) : If Arch = "" Then WScript.Quit
P = Left(P, Len(P) - 1)
End If
Set WSH = CreateObject("WScript.Shell")
Set ShA = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.OpenTextFile(List,,,-1)
Do : F = Trim(.ReadLine)
If F > vbNullString Then
If FSO.FolderExists(F) Then ForFolder F, T Else ForFile F, T
End If
Loop Until .AtEndOfStream : .Close
End With
Sub Info(Text) : WSH.Popup Text, 1.5 , " " & Title, 64 : End Sub
If T Then Info "Упаковка завершена!" Else Info "Нет подходящих объектов!"
Sub ForFolder(Folder, Test)
Set Folder = ShA.NameSpace(Folder)
Set Items = Folder.Items
Items.Filter 192, Filt : If Items.Count Then Test = 1
For Each Fl in Items : Run Fl.Path, FSO.GetExtensionName(Fl) : Next
Items.Filter 160, "*"
For Each Fd In Items
If Right(Fd, 6) <> "_files" Then ForFolder Fd.Path, Test
Next
End Sub
Sub ForFile(File, Test)
Extn = FSO.GetExtensionName(File)
If Len(Filt) Then
If Not Ubound(Filter(Split(LCase(Filt), ";"), "*." &_
LCase(Extn), True, 1)) Then Run File, Extn : Test = 1 End If
Else Run File, Extn : Test = 1
End If
End Sub
Sub Run(FF, Ex)
If InStr(P, ":") Then
Path = P
Else
PP = FSO.GetParentFolderName(FF) & "\"
If P <> "." And P <> "" Then PP = PP & P & "\"
If FSO.FolderExists(PP) Then Path = PP Else Path = FSO.CreateFolder(PP) & "\"
End If
If Len(Arch) Then
Name = Arch & "." & Ext
ElseIf P = "." Then
Name = FSO.GetFileName(Left(PP, Len(PP) - 1)) & "." & Ext
Else
Name = FSO.GetBaseName(FF) & "." & Ext
l = 0 : Const M = 1
Do While FSO.FileExists(Path & Name)
l = l + 1
If l < 10^M Then PostFix = Right(String(M, "0") & l, M) Else PostFix = l
Name = FSO.GetFileName(FF) & " (" & PostFix & ")." & Ext
Loop
End if
If LCase(Ex) = "htm" Or LCase(Ex) = "html" Then FF = """" & FF & """ """ &_
Left(FF, InStrRev(FF, Ex) - 2) & "_files""" Else FF = """" & FF & """"
If LCase(Ext) <> "rar" Then
Pr = SZIP : Param = "a """ & Path & Name & """ " & FF & S
Else
Pr = RAR : Param = "a -ep1" & S & " ""\\?\" & Path & Name & """ " & FF
End If : WSH.Run """" & Pr & """ " & Param, 0, True
End Sub
|
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Tue Feb 03, 2015 20:26; edited 4 times in total |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Thu Jan 29, 2015 17:37 Post subject: |
|
|
Flasher
При параметрах %WL "" rar *.mht;*.htm;*.html получаю ошибку:
---------------------------
Строка: 105
Символ: 4
Ошибка: Недопустимое число аргументов или присвоение значения свойства
--------------------------- |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jan 29, 2015 17:59 Post subject: |
|
|
Nick, см. добавку в 56 строке. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Tue Feb 03, 2015 16:04 Post subject: |
|
|
Flasher
Иногда бывают проблемы с длинными именами (т.е. бывает иногда, что не работает, если путь где-то более 300 символов).
Если упаковывать несколько раз подряд (например, после правки html файла), то будет неправильная нумерация файлов.
Также хотелось бы еще добавить опцию, чтобы внутри одной папки все страницы упаковывались в один архив, т.е., например:
"Новая папка 1\Файлы html"
"Новая папка 1\Новая папка 2\Файлы html"
Чтобы внутри этих папок ("Новая папка 1" и "Новая папка 2") было бы по одному архиву со страницами. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Feb 03, 2015 20:04 Post subject: |
|
|
Skif_off wrote: | Прошу прощения, не совсем понял, где проблемы с длиной пути? | Первый скриншот.
Skif_off wrote: | 7-zip 9.30 и выше с ним точно работают | Как и rar. Но там про другое.
Skif_off wrote: | Или речь об этом скрипте? | Это можно проверить по дате последней правки поста. К посту доступ возможен в течение месяца с момента публикации. Не знал? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Wed Feb 04, 2015 00:41 Post subject: |
|
|
Flasher
Понял, где зарылась собака, только теперь не совсем понятно: как уживаются FSO.FolderExists(F) и префикс UNC-путей? MAX_PATH в VBScript уже отменили? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 04, 2015 10:48 Post subject: |
|
|
Skif_off
Им там и не приходится уживаться. А что значит "уже отменили"? Во встроенных компонентах его там и не было. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Wed Feb 04, 2015 20:11 Post subject: |
|
|
Flasher
Просто не каждый день бываю за компьютером и на форуме... Да и на тестирование тоже уходит определенное время.
Вроде бы с длинными путями стало более стабильно.
Когда пакуются файлы внтури одной папки в единый архив (параметры %WL . rar "" *.mht;*.htm;*.html), то лучше, чтобы не перезаписывался html файл (после каких-либо изменений), а добавлялся бы по номеру, т.е. также как и при упаковке файлов html по отдельным архивам (если, допустим, нужна будет перезапись, то ее можно сделать с помощью параметра архиватора -o+). |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 04, 2015 21:42 Post subject: |
|
|
Nick wrote: | Вроде бы с длинными путями стало более стабильно. | В смысле?Приведённое окно перестало появляться?
Nick wrote: | параметры %WL . rar "" *.mht;*.htm;*.html | Неверная запись. Отмеченных кавычек не должно быть.
Nick wrote: | лучше, чтобы не перезаписывался html файл (после каких-либо изменений), а добавлялся бы по номеру | Не вижу в этом смысла. Для обновления есть ключ -u, если что. А в 7-zip он имеет куда более гибкий функционал.
"Просто не каждый день бываю за компьютером и на форуме... Да и на тестирование тоже уходит определенное время." Не будем лукавить, его уходит значительно меньше, чем на процесс создания скрипта или добавку ряда опций. И выдавить из себя слово благодарности, доложив при этом о результатах ( только один из примеров), ИМО, не должно являться какой-то непреодолимой проблемой. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Thu Feb 05, 2015 18:00 Post subject: |
|
|
Flasher wrote: | Приведённое окно перестало появляться? | Да, пока не наблюдаю его. Flasher wrote: | Не вижу в этом смысла |
Это удобно когда есть много версий файлов html, при замене они все потеряются, а иногда бывает, что нужно откатиться на более старую версию. При архивировании отдельных html файлов, будут копии, это удобно, сохраняться все версии.
Но, кода очень много таких файлов в одной папке, то для экономии места, все архивируется в единый архив. Поэтому хорошо, если бы добавлялось в единый архив также, как и в случае с отдельными файлами (тем более, при необходимости перезаписи можно использовать ключ -o+ или параметры a -u). При таком варианте старые версии файлов не потеряются. Это особенно важно, если такие вещи проделывать на большом множестве папок с длинными путями.
Прочее За скрипты, конечно большое спасибо. Этот скрипт пока не проверял на большом множестве файлов. Думаю, что может быть полезен и другим, кому приходится иметь дело не только с архивацией, но и перемещением страниц (как пример при перемещении их на USB flash-накопитель). Да и занимаемое место может значительно уменьшиться.
Таких окон обычно больше десятка, поэтому бывает, что, что-то могу проследить или вообще еще не успеть посмотреть, что и получилось со скриптом по ссылке. Или вообще бывает, что сессию в браузере приходится заменять...
! | Avada: | Синтаксис тегов для спойлеров желательно проверять на предпросмотре. И не забывать ставить кавычки. |
Добавлено спустя 6 минут:
Avada
Просто, не успел еще исправить, увидел, когда уже отправил сообщение, а уже Вы написали... (на разных форумах разный синтаксис, а теги вставляю, часто вручную. Да и не все теги бывают прописаны... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Feb 05, 2015 19:48 Post subject: |
|
|
Nick wrote: | Да, пока не наблюдаю его. | Видимо, не в тех же условиях тесты проводятся. Нужно со структурой проверять.
Nick wrote: | Это удобно когда есть много версий файлов html, при замене они все потеряются, а иногда бывает, что нужно откатиться на более старую версию. При архивировании отдельных html файлов, будут копии, это удобно, сохраняться все версии. | С трудом себе представляю, когда кто-то плодит у себя версии html-страниц. И в любом случае я не считаю, что за переделки внутри архива должен отвечать скрипт. Этим должен заниматься архиватор. А архиватор, увы, может переименовывать только уже имеющиеся файлы, а не те, что добавляются в архив. Да и включать дополнительный листинг файлов внутри скрипта дело муторное с учётом различной глубины вложенности, это всяко будет на скорости негативно сказываться.
Прочее Ну, может, благодарность ещё в ЛС переместим или вообще мне на мыло отправим, чего уж там в спойлер прятать?
Полезность - вещь сугубо индивидуальная. Экономия на текстовых файлах давно неактуальная задача. У меня одна из флешек - 240 Гб. Кого мне там экономить? Поэтому безотносительно местами надуманной общественной полезности нужно не забывать, что запрос актуален прежде всего для вопрошающего, за ним и ответка.
Вкладки же имеет смысл держать при изучении информации. Для всего остального достаточно подфорума или главной страницы, где можно всё проследить и увидеть. И никто не мешает использовать расширения для оптимизации работы с ушками. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Nick
Joined: 26 Dec 2014 Posts: 107
|
(Separately) Posted: Tue Apr 21, 2015 19:28 Post subject: |
|
|
Поскольку в этой теме никто не отвечает, то, напишу здесь.
Что надо изменить в этом скрипте, чтобы в названии архива также присутствовало и расширение оригинального файла? |
|
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
|