View previous topic :: View next topic |
Author |
Message |
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Aug 14, 2011 01:24 Post subject: |
|
|
Вот это хороший вариант, а то предыдущий Quote: | Рекурсивная распаковка архивов внутри выделенных каталогов | у меня работать не захотел, Батник от Tol!k - работает, отлично. И есть предложение: к данному скрипту Quote: | Распаковка выделенных архивов и архивов в структуре | добавить возможность распаковывать winrar om -можно закоментировать строчку, с путем к нему, и если что, будет выбор, чем распаковывать.( при условии, что путь к 7zip конечно, тоже может быть закоментирован). Спасибо. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 14, 2011 01:31 Post subject: |
|
|
shveicar wrote: | у меня работать не захотел | У меня работает отлично.
shveicar wrote: | добавить возможность распаковывать winrar om -можно закоментировать строчку, с путем к нему, и если что, будет выбор, чем распаковывать. | Добавлять не буду. Платный. 42 расширения разве мало? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Aug 14, 2011 01:44 Post subject: |
|
|
Flasher wrote: | Добавлять не буду. Платный. 42 расширения разве мало? | - да, расширений достаточно, только мне кажется, что 7zip рано или поздно, тоже станет платным. Ну нет, так- нет: хозяин - Барин... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 14, 2011 01:56 Post subject: |
|
|
Станет когда-нибудь 7-zip платным (в чём я сомневаюсь) или нет никак не объясняет, почему я должен добавлять уже платный Winrar. Впрочем это легко делается самостоятельно. |
|
Back to top |
|
|
chery123321
Joined: 21 Apr 2012 Posts: 2
|
(Separately) Posted: Sat Apr 21, 2012 02:09 Post subject: |
|
|
чегото не могу разобраться.батник от Tol!k работает,только из дерева папок все архивы паспаковывает в корень, а не в те папки где были архивы.другие коды не работают у меня по малости опыта работы а тоталом. написоно вроде понятно,но знаний не зватает.плиз хелп |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Apr 21, 2012 10:12 Post subject: |
|
|
chery123321
Перед просьбой о помощи по "не"работающим кодам памятка была прочтена? |
|
Back to top |
|
|
chery123321
Joined: 21 Apr 2012 Posts: 2
|
(Separately) Posted: Sat Apr 21, 2012 10:55 Post subject: |
|
|
Flasher wrote: | chery123321
Перед просьбой о помощи по "не"работающим кодам памятка была прочтена? |
я ж говорю что один работает,другой не получилось,это не код виноват а я |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Apr 21, 2012 11:32 Post subject: |
|
|
chery123321
Если есть желание оказаться на доске "почёта", то можно продолжать вести диалог (и скорее уже монолог) в том же духе.
Если же есть желание получить результат, то отвечаем на конкретно поставленный вопрос. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 07, 2014 02:07 Post subject: |
|
|
Народ, привожу модифицированный код с добавлением важных функций:1) возможность удаления распакованных архивов;
2) возможность вытаскивать одиночные элементы без доп. папки;
3) возможность пропуска, перезаписи и переименования файлов;
4) автоматический переход к элементу при распаковке одного архива (в т.ч. в структуре). RecursiveUnpack.vbs Code: | '••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Распаковка выбранных архивов и/или архивов в структуре выбранных каталогов
' в одноимённые папки рядом с архивами (при наличии в них более одного элемента)
' c автоматическим переходом в случае распаковки одного архива
' Параметры:
' 1. %WL (обязательный)
' 2. <расширения архивов через запятую> ("" - все поддерживаемые)
' 3. <флаг распаковки одиночных элементов без подкаталогов: 1>
' 4. <пропустить/перезаписать существующие/переименовать извлекаемые файлы: s/a/u>
' 5. <флаг удаления распакованных архивов: 1>
' Примеры: %WL | %WL "" 1 | %WL 7z,7zip,arc,bzip2,rar,zip | %WL "" 1 s 1
' Автор - Flasher ©
'••••••••• Путь к утилите 7z.exe •••••••••
Z7 = "%COMMANDER_PATH%\Utils\7-Zip\7z.exe"
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Set A = WScript.Arguments : C = A.Count
Select Case C : Case 0 Quit : Case 2 Filt = A(1) : End Select
If C > 2 Then One = A(2) : If C > 3 Then Mode = "-ao" & A(3) : If C > 4 Then Del = A(4)
List = A(0) : Dim WSH : Set WSH = CreateObject("WScript.Shell")
If InStrRev(WScript.FullName, "WScript.exe") Then
For Par = 1 To C - 1
If A(Par) <> "" Then
Pars = Pars & " " & A(Par)
ElseIf C - 1 > Par Then Pars = Pars & " """""
End If
Next : WSH.Run "CScript.exe """ & WScript.ScriptFullName & """ " & List & Pars, 0 : Quit
End If
Set Dict = CreateObject("Scripting.Dictionary")
Set FSO = CreateObject("Scripting.FileSystemObject")
Exts = "zip,7z,7zip,arj,bz2,bzip2,cab,chm,chw,cpio,cramfs,deb,dmg,"&_
"doc,exe,fat,gz,gzip,hfs,hxs,iso,lha,lzma,mbr,msi,ntfs,ppt,rar,"&_
"rpm,scap,squashfs,swm,tar,taz,tbz,tbz2,tgz,vhd,wim,xar,xls,xz"
For Each E in Split(Exts, ",") : Dict.Add E, "" : Next
If Not Len(Filt) Then Filt = Exts
With FSO.OpenTextFile(List,,,-1)
Do Until .AtEndOfStream
F = Trim(.ReadLine)
If F <> "" Then
If FSO.FolderExists(F) Then ForFolder FSO.GetFolder(F), Ch, It Else ForFile F, Ch, It
End If
Loop : .Close
End With : Set Dict = Nothing
If Ch = 1 Then WSH.Exec "%COMMANDER_EXE% /S /O /L=""" & It & "\:"""
If Ch > 1 Then WSH.Popup "Распаковка завершена!", 1.4 , " Результат", 64
Sub ForFolder(Folder, T, F1)
For Each N In Folder.SubFolders : ForFolder N, Ch, It : Next
For Each N In Folder.Files : ForFile N, Ch, It : Next
End Sub
Sub ForFile(Arch, T, F1)
For Each Fi in Split(Filt,",")
If StrComp(Fi, FSO.GetExtensionName(Arch), 1) = 0 And Dict.Exists(LCase(Fi)) Then
Set Exe = WSH.Exec("%comspec% /c chcp 1251 | """ & Z7 & """ l " &_
"-slt """ & Arch & """ -sccUTF-8| find ""Path = ""| find /v ""\""")
Item = Replace(Exe.StdOut.ReadLine, "Path = ", "")
Sum = 0 : If Item <> "" Then Sum = 1
If Exe.StdOut.ReadLine <> "" Then Sum = 2
If Sum > 0 Then
BN = FSO.GetBaseName(Arch) : P = FSO.GetParentFolderName(Arch)
With CreateObject("ADODB.Stream")
.Type = 2 : .Open : .Charset = "windows-1251" : .WriteText Item
.Position = 0 : .Charset = "UTF-8" : Item = .ReadText : .Close
End With : Fd = P & "\" & BN
If Sum = 1 And (One = "1" Or BN = Item) Then NF = P Else NF = Fd
F1 = NF & "\" & Item
WSH.Run """" & Z7 & """ x """ & Arch & """ -o""" &_
NF & """ " & Mode & " -y -p", 0, True : T = T + 1
If FSO.FileExists(F1) Then
If Del = 1 And Sum = 1 Then FSO.DeleteFile Arch, 1
ElseIf FSO.FolderExists(F1) Then
If FSO.GetFolder(F1).Size Then
If Del = 1 And Sum = 1 Then FSO.DeleteFile Arch, 1
Else FSO.DeleteFolder F1, 1
End If
ElseIf FSO.FolderExists(Fd) Then
If FSO.GetFolder(Fd).Size Then
If Del = 1 Then FSO.DeleteFile Arch, 1
Else FSO.DeleteFolder Fd, 1
End If : F1 = Fd
End If : Exit For
End If
End If
Next
End Sub : Sub Quit : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit : End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Dec 31, 2014 17:14; edited 7 times in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Dec 11, 2014 16:31 Post subject: |
|
|
Исправил проблему для архивов с определёнными опциями сжатия. Оптимизировал код (убрал лишнее). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Wed Dec 24, 2014 22:54 Post subject: |
|
|
Flasher,
Спасибо.
Проверил скрипт. Выдаёт ошибку.
Line 51
Char 4
Error Invalid character
Code 800A0408
Source Microsoft VBScript compilation error.
По-моему вот эта линия:
Code: | If Сh = 1 Then WSH.Exec "%COMMANDER_EXE% /S /O /L=""" & It & "\:""" |
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 24, 2014 23:01 Post subject: |
|
|
Iori
В некоторых случаях система (причём одна и та же) отказывается воспринимать первый путь без кавычек. Попробуем добавить:
Quote: | If Ch = 1 Then WSH.Exec """%COMMANDER_EXE%"" /S /O /L=""" & It & "\:""" |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Thu Dec 25, 2014 16:26; edited 1 time in total |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Wed Dec 24, 2014 23:29 Post subject: |
|
|
Flasher
Та же ошибка.
Нет моя вина. Прописал 7zG.exe a не 7z.exe.
Ошибки больше нет, но такая же проблемма что и с Толикином батником.
To-есть скорее дело именно в новом 7зипе.
Странно что alpha работала а вот betta нет.
Сделал несколько тестов.
Выходит так: 7-Zip 9.34 и 7-Zip 9.35 не работают правильно через кнопку. 7-Zip 9.30 эта Последняя версия которая работает нормально.
Last edited by Iori on Wed Dec 24, 2014 23:49; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 24, 2014 23:41 Post subject: |
|
|
Iori
В данном скрипте нельзя менять 7z.exe. Убедись в том, что файлы 7z.exe и 7z.dll в исходной папке обновлены (в соотв. с этим дистрибутивом). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Thu Dec 25, 2014 00:53; edited 1 time in total |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Thu Dec 25, 2014 00:11 Post subject: |
|
|
Flasher
Quote: | Убедись в том, что файлы 7z.exe и 7z.dll в исходной папке обновлены |
Проверил, всё обновленно 100%.
А у вас версия 9.35 работает со скриптом? |
|
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
|