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 

скрипт для кодирования(декодирования) нескольких файлов b64
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



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

Post (Separately) Posted: Sat Mar 17, 2012 16:37    Post subject: Reply with quote

shveicar wrote:
мало соответствует моему итогу
На что и указывает моя последняя фраза.
shveicar wrote:
Если хочется быть Гуру, то
надо ехать в тибетский или индийский монастырь на долгие-долгие годы обучения в ожидании просветления. Wink
shveicar wrote:
проще дать ссылку на нужный материал
Проще самому без чужой помощи на странице подфорума открыть прикреплённую памятку, которая давно в ссылках уже не нуждается.
shveicar wrote:
тем более, что Я указал, что с таким скриптом - сталкиваюсь первый раз.
Конечно, в первый, я его буквально ночью "на коленке" и написал. Very Happy Я тоже в первый - и ничего, сознания от мозговой перегрузки не терял. Wink
К тому же в синтаксисе кода никто разбираться не заставлял. Понимание синтаксиса элементарных командных строк к знанию языка отношения не имеет.
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Sat Mar 17, 2012 17:01    Post subject: Reply with quote

Так все-же, - с помощью AutoHotKey несколько файлов сразу, - обработать никак не получиться? (может просто, до этого мы еще не дошли Very Happy ) или надо искать дополнительное П.О.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Mar 17, 2012 17:06    Post subject: Reply with quote

Можно практически с помощью любого языка обработать несколько файлов, всё утыкается в знание языка и понимание того, как декодировать соотв. формат. AutoHotKey для этих целей - не мой случай.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Mar 17, 2012 17:06    Post subject: Reply with quote

кнопка
Code:
TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %? in
('type "%WL"') do >"%%~dpn?.b64" (echo MIME-Version: 1.0&echo Content-Type: application/octet-stream; name="%%~nx?"&echo Content-Transfer-Encoding: base64&echo Content-Disposition: attachment; filename="%%~nx?"&echo.&base64.exe -e "%%?" -s)
wcmicons.dll,66
Выделенные файлы => MIME

1
-1

Exclamation проблемы с именами на кириллице

base64.exe http://www.f2ko.de/programs.php?lang=en&pid=b64


Last edited by Tol!k on Sat Mar 17, 2012 17:12; 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: Sat Mar 17, 2012 17:10    Post subject: Reply with quote

Tol!k
Я эту прогу как-то пробовал раньше, на 7-ке не шла. Сейчас опробую ещё раз с твоим вариантом.

Добавлено спустя 5 минут:
Вроде, ОК (не считая кириллицы). Хотя я в основном на кириллице пишу.
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Sat Mar 17, 2012 17:31    Post subject: Reply with quote

Tol!k
Спасибо, вариант неплохой, особенно если имена в цифрах.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Mar 18, 2012 15:12    Post subject: Reply with quote

Code:
'=========================================================
' Кодировать/декодировать выделенные файлы в/из MIME (b64)
' Параметры: %WL "<путь получателя>" "<упаковывать в zip>"
' Примеры:   %WL "%P"  |  %WL "%T" 1  |  %WL C:\Test 1
' Автор:  Flasher ©
'=========================================================
With WScript.Arguments
  C = .Count : If C = 0 Then WScript.Quit
  List = .Item(0) : Path = .Item(1)
End With : L = vbNewLine : Const M = 1
If Right(Path, 1) <> "\" Then Path = Path & "\"
Set XML    = CreateObject("MSXml2.DOMDocument")
Set FSO    = CreateObject("Scripting.FileSystemObject")
Set Stream = CreateObject("ADODB.Stream") : Stream.Type = 1
If C = 3 Then
  Set Shell = CreateObject("Shell.Application")
  Exts = "7z|7zip|zip|rar|cab|bzip|bz2|bzip2|arj|tar|gz|tgz"
  Temp = CreateObject("WScript.Shell").Environment("Process")("TEMP") & "\"
End If
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, L)
  If FSO.FileExists(F) Then
    If StrComp(FSO.GetExtensionName(F), "b64", 1) = 0 Then
      Set OF = FSO.OpenTextFile(F) : Code = OF.ReadAll : OF.Close
      LL = InStr(Code, L & L) : NN = InStr(Code, "filename=") + 10
      Set DE = XML.CreateElement("tmp") : DE.Text = Mid(Code, LL + 4)
      Stream.Open : DE.DataType = "bin.base64" : Stream.Write DE.NodeTypedValue
      Name = Mid(Code, NN, LL - NN - 1) : Rename Name
      Stream.SaveToFile Path & Name, 2
      Stream.Close : Set DE = Nothing : Set OF = Nothing
    Else
      If C = 3 Then
        If InStr(Exts, LCase(FSO.GetExtensionName(F))) = 0 Then
          NF = Temp & FSO.GetBaseName(F) & ".zip" : Set ZIP = FSO.CreateTextFile(NF)
          ZIP.Close : Set ZIP = Nothing
          Set ArchDir = Shell.NameSpace(NF) : ArchDir.CopyHere(F) : WScript.Sleep 50
          Size = 0 : Set AF = ArchDir.ParseName(FSO.GetFileName(F))
          Do Until Size = FSO.GetFile(F).Size : Size = AF.Size : Loop
          WScript.Sleep 10 : Set AF = Nothing : Set ArchDir = Nothing : F = NF
        End If
      End If
      Stream.Open : Stream.LoadFromFile(F)
      XML.LoadXML "<Base64Data />" : Set E = XML.documentElement
      E.DataType = "bin.base64" : E.NodeTypedValue = Stream.Read
      Stream.Close : Name = FSO.GetFileName(F)
      FName = FSO.GetBaseName(Name) & ".b64" : Rename FName
      Set File = FSO.OpenTextFile(Path & FName, 2, True)
      File.Write "MIME-Version: 1.0" & L & _
      "Content-Type: application/octet-stream; name=""" & Name & """" & L & _
      "Content-Transfer-Encoding: base64" & L & _
      "Content-Disposition: attachment; filename=""" & Name & """" & L & L & E.Text
      File.Close : Set E = Nothing : If C = 3 Then FSO.DeleteFile F, 1
    End If
  End If
Next : Set XML = Nothing : Set FSO = Nothing
Set Stream = Nothing : Set Shell = Nothing : WScript.Quit

Sub Rename(FileName)
  FN = FileName : n = 0
  Do While FSO.FileExists(Path & FileName)
    n = n + 1
    If l < 10^M Then PFix = Right(String(M, "0") & n, M) Else PFix = n
    FileName = FSO.GetBaseName(FN) & " (" & PFix & ")." & FSO.GetExtensionName(FN)
  Loop
End Sub
Минус - кодируется менее сжато, чем с ТС.
Проблем с кириллицей, естественно, нет, как и лишних пустых строк, которые ТС в конец (не понять - зачем) добавляет.


Last edited by Flasher on Tue Mar 20, 2012 00:12; edited 3 times in total
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Sun Mar 18, 2012 23:54    Post subject: Reply with quote

Flasher
А скрипт точно бинарники обрабатывает? (Тестить времени нет).
FSO.OpenTextFile(F) на нуль-байте не споткнётся?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Mar 19, 2012 00:23    Post subject: Reply with quote

Serge Yolkin
Не споткнётся. Список файлов - текст, b64 - текст. Когда появится время - отпишись.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Mar 19, 2012 00:28    Post subject: Reply with quote

Flasher
OK
Только на JScript переведу...
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Mar 19, 2012 00:29    Post subject: Reply with quote

Serge Yolkin
Дык а какая разница? Smile
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Mar 19, 2012 00:45    Post subject: Reply with quote

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



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

Post (Separately) Posted: Mon Mar 19, 2012 00:46    Post subject: Reply with quote

Serge Yolkin
В зачем его знать? Возьми, сохрани и используй. Wink
Модифицировать что? Могу автопереименовалку при совпадении имён добавить. Чего ещё не хватает?
Back to top
View user's profile Send private message
shveicar



Joined: 18 Apr 2011
Posts: 277
Location: Россия Москва

Post (Separately) Posted: Mon Mar 19, 2012 01:09    Post subject: Reply with quote

Доброй ночи,
Да, скрипт хорош, что еще сказать... Единственное для меня удобнее %WL "%P" - впрочем кому надо, тот под себя настроит. (авто переименование будет лишним, какой в нем смысл?)
Flasher
Спасибо за помощь, (извини, если что не так) Wink а то, уже начал думать что AutoHotkey будет по мощнее чем vbs - впрочем, каждому инструменту свое предназначение.
P.s Наконец, появилось время, буду изучать скрипты...


Last edited by shveicar on Mon Mar 19, 2012 01:15; edited 1 time in total
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Mar 19, 2012 01:09    Post subject: Reply with quote

Flasher
Не-е. С твоим методом поиграться надо.
Например: по ПКМ на файле выбираем "Энкодить", и результат - в буфере обмена. Можно вставлять ресурс в хэтэашку, открытую в редакторе.
Или так: сначала - в 7z, а уж потом энкодить. Для форума.
В общем, переведу, поиграюсь - поделюсь.
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 Previous  1, 2, 3, 4  Next
Page 2 of 4

 
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