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, 4, 5  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Fri Aug 07, 2015 21:07    Post subject: Реархивация Reply with quote

Кто-нибудь покажите пример кнопки, которая должна будет осуществлять 3 действия:разархивирование упакованных файлов, архивирование их с максимально-возможным сжатием, удаление распахованных файлов. Любыми средствами, хотя подозреваю, что на бат опять будет проблема с уникодными именами. Для zip или rar. Чтобы упаковка происходила с сохранением структуры упакованных файлов и папок, в противоположную панель с именем исходного архива
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Aug 09, 2015 11:14    Post subject: Reply with quote

Зачем чего-то распаковывать, если в WinRAR есть преобразование? Галок наставил, сохранил, потом с параметрами cv -y и маской отработал (-r рекурсивно).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Mon Aug 10, 2015 13:11    Post subject: Reply with quote

А как можно сконвертировать rar и zip в 7z? Лучше ужимается им. Желательно одной кнопочкой
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Aug 10, 2015 14:33    Post subject: Reply with quote

В данном случае никак. Тут есть только rar5 как более ёмкий.
По поводу лучше вопрос спорный. Это далеко не WinRK/PAQ8 и даже не nanozip.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Mon Aug 10, 2015 15:31    Post subject: Reply with quote

Ну можно ж батник какой-нибудь написать, чтоб разархивировал рары, а потом через 7-zip переархивировал. Нашёл какой-то готовый в сети, только он не очень работает. А программа PeaZip тоже непонятно как работает
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Thu Jan 19, 2017 15:49    Post subject: Reply with quote

Пользуюсь такой кнопкой:

Code:
TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %# in
('type %WF') do "c:\Program Files\7-Zip\7z.exe" x "%%#" -o%%tmp%%\Rearch && "c:\Program Files\7-Zip\7z.exe" a -mx=9 "%T%%~n#.7z" %%tmp%%\Rearch\* && rd /s /q %%tmp%%\Rearch
%COMMANDER_PATH%\Totalcmd.exe,8
Rearchivate files to 7z

1
-1


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



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

Post (Separately) Posted: Thu Jan 19, 2017 21:28    Post subject: Reply with quote

Пробуй:
Code:
'•••••••••••••••••••••••••• VBS •••••••••••••••••••••••••••
' Назначение: Преобразование типов выбранных архивов
'             с сохранением даты модификации в новых

' Условие: Наличие инсталляции системного аддона TC4Shell
' Страница загрузки: http://www.tc4shell.com/ru/download/

' Параметры: %WL "<путь назначения>" <новое расширение>
' Необязат.: "<параметры упаковки>" <удалять исходники: 1>

' Примеры: %WL "%P" 7z "-mx9 -m0=LZMA2:fb273 -m1=LZMA2:lc4"
'          %WL "%T" zip "-mx9 -mm=Deflate -mfb=258 -mcu=on"
'          %WL "%P" exe "-sfx7z.sfx -mx9" 1
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Option Explicit: Dim C, Par, Del, List, Trg, ExtN, FSO, ShA
'••••••••••••••••• Путь к утилите 7z.exe ••••••••••••••••••
Const Z7 = """%COMMANDER_PATH%\Utils\7-zip\7z.exe"""
'••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••

Const Title = "  Преобразование типов выбранных архивов      "
With WSH.Arguments : C = .Count : Par = " -sdel"
 Select Case True : Case C = 0 WSH.Quit
   Case C < 3 MsgBox " Укажите хотя бы 3 параметра!", 4144, Title : WSH.Quit
   Case C > 3 Par = .Item(3) & Par: If C = 5 Then Del = .Item(4)
 End Select : List = .Item(0) : Trg = .Item(1) : ExtN = .Item(2)
End With : Dim Exts: Exts = " 7Z  | 7ZIP | EXE | GZ2 | GZIP2 | SWM | WIM "&_
"| ZIPX " & vbCr & " ZIP | ODS | TAR | JAR | DOCX | ODT | XLSX | XPI | EPUB"
If InStr(Exts & " ", " " & Ucase(ExtN) & " ") = 0 Then _
MsgBox "Указанное расширение """ & ExtN & """ не поддерживается!" &_
vbCr & vbCr & "Список поддерживаемых расширений:" &_
vbCr & Exts, 4144, Title : WSH.Quit
Dim WSS, Reg, Tmp, Temp, F, Ext, Arch, Items, NN, NA
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShA = CreateObject("Shell.Application")
Set WSS = CreateObject("WScript.Shell")
Set Reg = New Regexp : Dim OS, PassW, Enc, EnCrypt, T, P : OS = WSS._
RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
Reg.IgnoreCase = True: Reg.Pattern = "^(001|7z(|ip)|a|apm|arj?|bz(|ip)2|" &_
"cab|cpio|ch[iqmw]|cramfs|deb|dmg|docx?|e(sd|pub|xe|xt[234]?)|fat|gz(|ip" &_
")|hfsx?|hx[sirqw]|ihex|img|iso|jar|li[bt]|l(zh|ma)|lha|mbr|ms(i|lz|sp)|" &_
"mub|n(si|tf)s|od[st]|qcow(|2c?)|r00|rar|rpm|pkg|ppmd|ppt|squashfs|scap|" &_
"swm|t[agx]z|tar|tbz2?|u(d|efi)f|vdi|vhd|vmdk|wim|x(ar|lsx?|pi|z)|z|zipx?)$"
Tmp  = ShA.NameSpace(WSS.Environment("Process")("TEMP")).Self.Path & "\"
Temp = Tmp & FSO.GetBaseName(FSO.GetTempName) : FSO.CreateFolder Temp

With FSO.OpenTextFile(List,,,-1)
  Do : F = .ReadLine : Ext = FSO.GetExtensionName(F)
    If FSO.FileExists(F) And Ext <> ExtN And Reg.Test(Ext) Then
      Set Arch = ShA.NameSpace(F)
      If Arch.Self.IsFolder Then
        Set Items = Arch.Items : Items.Filter 73952, "*" : PassW = Chr(0)
        NN = FSO.GetBaseName(F) & "." & ExtN : NA = FSO.BuildPath(Trg, NN)
        Enc = Len(Arch.Self.ExtendedProperty("System.IsEncrypted"))
        If Enc And InStr("|7z|7zip|gz|gzip|", "|" & Ext & "|") Then _
        EnCrypt = " -mhe" Else EnCrypt = ""
        If Not FSO.FileExists(NA) And (Items.Count Or Enc) Then
          If OS <= "5.1" Or Enc Then T = 8192 Else T = (_
          CLng(Items.Item(0).ExtendedProperty("System.SFGAOFlags"))And 8192)
          If T = 8192 Then GetPass F, Passw, "", Enc Else _
          WSS.Run Z7 & " x """ & F  & """ -o""" & Temp & """ -y -p", 0, True
         If PassW <> "" Then
          P = Par: If PassW <> Chr(0) Then P = Par & " -p" & PassW & EnCrypt
          WSS.Run Z7 & " a """ & NA & """ """  & Temp & "\*"" " & P, 0, True
          If FSO.FileExists(NA) Then ShA.NameSpace(Trg).ParseName(NN)._
          ModifyDate = FSO.GetFile(Arch.Self.Path).DateLastModified  :_
          C = 0 : If Del = 1 Then FSO.DeleteFile F, 1
         End If
        End If
      End If
    End If
  Loop Until .AtEndOfStream : .Close
End With : FSO.DeleteFolder Temp : If C = 0 Then C = 24 : NA = "Выполнено!"_
Else C = 12 : NA = "Нет подходящих архивов!"
If FSO.FolderExists(Tmp & "TC4Shell") Then FSO.DeleteFolder Tmp & "TC4Shell"
WSS.Popup Space(C) & NA, 5, Title, 4160

Sub GetPass(Arc, P, Text, Num)
  If OS > "5.1" Or Num Or P <> Chr(0) Then _
  P = InputBox(vbCr & "Архив:  """ & Arc & """" & vbCr & vbCr &_
      Text & vbCr & vbCr & "Введите пароль:", "     " & Title, P)
  If P <> Chr(0) Then Text = Space(40) & "Пароль неверен!"
  If Len(P) Then _
  WSS.Run Z7 & " x """ & Arc & """ -o""" & Temp & """ -y -p" & P, 0, True :_
  If FSO.GetFolder(Temp).Size = 0 Then GetPass Arc, P, Text, 1
End Sub

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed Jan 25, 2017 20:26; edited 23 times in total
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Thu Jan 19, 2017 22:08    Post subject: Reply with quote

Как сделать упаковку в противоположную панель?

Можно, чтобы папки в упакованном архиве имели оригинальную дату? С кнопкой так получается.

А что, с LZMA2 ты замечал разницу? Я сравнивал, хоть бы на килобайт чем-то отличалось.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Jan 20, 2017 09:52    Post subject: Reply with quote

См. параметры и проверяй.

Если бы не замечал, то не писал бы об этом в примечании.
Попробуй на текстовых, например.

Add: Слегка оптимизировал.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Fri Jan 20, 2017 16:11    Post subject: Reply with quote

Всё выполняется, но в конце появляется ошибка:
Line:60
Char:37
Error:Path not found

Добавлено спустя 3 минуты:

%WL "%T" 7z "-mx=9"

Добавлено спустя 9 минут:

Те же параметры но с "1" архив-источник не удаляет.

Добавлено спустя 8 минут:

И ещё c архивами 7z не работает.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Jan 20, 2017 16:34    Post subject: Reply with quote

Dimsok wrote:
Char:37
У тебя точно последняя редакция?
Dimsok wrote:
Те же параметры но с "1" архив-источник не удаляет.
А, сперва другой метод был, кое-что забыл учесть. Исправлю после того, как с первым багом разберёмся.
Dimsok wrote:
И ещё c архивами 7z не работает.
В смысле? Я в большей степени на них и тестировал.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Fri Jan 20, 2017 16:44    Post subject: Reply with quote

С последней Line 60 Char 2

C 7z тут пишет "нет подходящих архивов".
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Jan 20, 2017 16:54    Post subject: Reply with quote

Dimsok wrote:
С последней Line 60 Char 2
Похоже на XP папка TC4Shell в %Temp% не появляется. Поменяем.
Dimsok wrote:
C 7z тут пишет "нет подходящих архивов".
Если тип архива совпадает или паковать по сути нечего (внутри архивов пусто или объекты-нулёвки), то выдаст такое сообщение.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 486

Post (Separately) Posted: Fri Jan 20, 2017 16:56    Post subject: Reply with quote

Ну не знаю, с кнопкой этот же 7z пакует. А понял, ты убрал возможность паковать в то же расширение, чтобы не было конфликтов при упаковке в ту же панель? Хотя иногда имеет смысл паковать в тот же самый архив с большим сжатием.
И как добавить новое расширение? Дописал CAB после WIM, но видно этого мало.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Jan 20, 2017 16:59    Post subject: Reply with quote

Dimsok wrote:
Ну не знаю, с кнопкой этот же 7z пакует.
А чего тут знать? Зачем мне из таких же архивов получать точно такие же? Это глупо для скрипта преобразования.
Dimsok wrote:
Дописал CAB после WIM, но видно этого мало.
Это ещё зачем?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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, 4, 5  Next
Page 1 of 5

 
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