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: Mon Mar 19, 2012 01:16    Post subject: Reply with quote

shveicar wrote:
авто переименование будет лишним, какой в нем смысл?
Допустим файлы b64 скопированы в папку, где лежат файлы с закодированными именами, но с другим содержимым, при декодировании они перепишутся, что не всегда желательно. Или нужно из имеющихся файлов создать новые b64 после модификации, при этом в этой папке лежат старые b64. В этом случае может понадобится иметь несколько модифицированных MIME-вариантов.
shveicar wrote:
а то, уже начал думать что AutoHotkey будет по мощнее чем vbs
Есть кое-что помощнее, но точно не AutoHotKey. Тут у каждого свои плюсы и минусы. Но то, что AHK куда легче в усвоении - факт.

Serge Yolkin wrote:
Например: по ПКМ на файле выбираем "Энкодить", и результат - в буфере обмена.
ПКМ в TC не поставишь, а биндить на резидент желания нет (задача не частая). Кодировать в буфер ещё проще. Думаю, добавлю параметр. Хотя нет, мы же списки обрабатываем (как верно далее замечено), это тоже не подходит. Посмотри название темы.
Serge Yolkin wrote:
Или так: сначала - в 7z, а уж потом энкодить. Для форума.
Раньше была и такая мысль. Странно, что забыл совсем. Это, пожалуй, для нескольких файлов сделать можно. Позже оформлю дополнительный вариант.

Last edited by Flasher on Mon Mar 19, 2012 01:30; edited 3 times in total
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:20    Post subject: Reply with quote

Serge Yolkin wrote:
Например: по ПКМ на файле выбираем "Энкодить", и результат - в буфере обмена

Так скрипт, специально создавался для нескольких файлов. Что же будет если их сумму - загнать в буфер. Very Happy
Flasher wrote:
Допустим файлы b64 скопированы в папку, где лежат файлы с закодированными именами, но с другим содержимым

Ну если, человек профессиональный перекодировщик, то что-бы не запутаться - согласен такое необходимо...


Last edited by shveicar on Mon Mar 19, 2012 01:49; 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: Mon Mar 19, 2012 01:23    Post subject: Reply with quote

shveicar wrote:
скрипт, специально создавался для нескольких файлов
Кстати, очень верное замечание. Как я сразу не сообразил. Smile
shveicar wrote:
Ну если, человек профессиональный перекодировщик, то что-бы не запутаться ...
Честно, не уловил мысль насчёт кодировщика. И дело разве в "запутаться"? Я пишу про необходимость наличия разных (де)кодированных модификаций файлов в одной папке.
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 02:24    Post subject: Reply with quote

Quote:
Честно, не уловил мысль насчёт кодировщика

Поясняю: Если Чел не "профи", создает папку,- кидает туда информацию (имена естественно разные) выполняет скрипт, - получает, допустим в той-же, в папке результат... Обратная процедура выглядит так-же: в чистую папку кидаем файлы в B64 -применяем скрипт,- и там-же забираем результат, В случае с Профи, - при сохранении результатов в существующие папки с файлами, (все зависит от параметров в скрипте и наличии "обработанных" файлов) - могут быть косяки...
Впрочем, Вам как Автору, - виднейWink.
Лично Я, не против - дополнительных опций...
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 02:45    Post subject: Reply with quote

shveicar
Т.е. есть уверенность, что у "не профи" точно не появится желание скидывать всё в одну папку? У меня такой уверенности нет.
Но вот вопрос - если таки файлы уже есть, переписывать их есть смысл или всё же стоит добавлять новые? Т.е. тут сразу надо переименовывать или только с выставлением опции?
Паковать в 7-zip тоже опционально, или отдельный скрипт - лучше?
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 03:04    Post subject: Reply with quote

Flasher
Если возможно:
Когда, такие файлы уже есть - лучше добавлять новые. Для 7zip (ради удобства) - лучше создать отдельный скрипт.
Спасибо за Труды.
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 04:07    Post subject: Reply with quote

shveicar
Ренэйм сделал. Скрипт с 7z - завтра.
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 11:03    Post subject: Reply with quote

Flasher wrote:
ПКМ в TC не поставишь

Через внутренние ассоциации - легко.

А на счет темы - да, оффтоплю. Результаты ковыряний в скрипте сообщу где-нибудь в другой ветке. Если только автор не возражает.
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 13:12    Post subject: Reply with quote

Flasher wrote:
Ренэйм сделал

Порядок, Все работает. ОК...

Serge Yolkin wrote:
Если только автор не возражает

Не возражаю, мне будет тоже интересно, тем более что на js
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 14:31    Post subject: Reply with quote

Serge Yolkin wrote:
Через внутренние ассоциации - легко.
Я сейчас перечитал как ты написал: выбираем "Энкодить". Ты про меню. А я было подумал, что ты про выполнение по нажатию ПКМ. Тогда это вообще бессмыслица, в то время когда есть Enter и даблклик ЛКМ. Контекстное меню-то тут при чём? И как это относилось к модификации кода? Да и через вн. ассоциации несколько файлов при использовании цикла не подхватишь, только многократным выполнением скрипта без оного (такая реализация мне не по душе).
Serge Yolkin wrote:
Если только автор не возражает.
Автор чего - топика или скрипта? 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 23:57    Post subject: Reply with quote

shveicar wrote:
Для 7zip (ради удобства) - лучше создать отдельный скрипт.
Не захотелось что-то включать утилиту. Пакую в zip-ы. Разница в результате несущественная. Иногда и zip выигрывает по ёмкости b64. Да и формат есть по умолчанию в Тотале и на всех современных системах в отличии от 7zip.
Скрипт тот же с новым ключом. Ничего неудобного в этом не вижу.
Back to top
View user's profile Send private message
shveicar



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

Post (Separately) Posted: Tue Mar 20, 2012 15:18    Post subject: Reply with quote

Flasher
В таком виде, - весьма удобно, главное что правильно определяет типы файлов... (про отдельный скрипт говорил, - из за возможных ошибок с определением)
Проверил - все- Ок.. Спасибо.
P.s Вот и не коммерческая версия (платного аналога) получилась Wink ...
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Mar 20, 2012 22:17    Post subject: Reply with quote

shveicar
Это скрипт, а не просто компонент. Поэтому аналогии тут нет. Ну, а этот платный компонент, возможно, ужимает получше MSXml2 и задействует более расширенный анализ кода. Хотя я его ещё толком не тестировал. Бесплатные внешние компоненты подключить могу (если они лучше ужимают, конечно).
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Mar 28, 2012 22:59    Post subject: Reply with quote

Tol!k wrote:
проблемы с именами на кириллице
Попробуй с такой утилитой.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jul 29, 2012 20:56    Post subject: Reply with quote

Тут был запрос.

Code:
'================================================================
' 1) Получение в текущей папке файла из кодированного текста
' буфера обмена вида B64/MIME/UUE/XXE/BinHex
' 2) Если в буфере нет соотв. кода,
'    то кодировать/декодировать выбранные файлы в панели

' Условие: путь запуска - пустой

' Параметры: %WL <расширение кодировки> <флаг упаковки в zip: 1>

' Возможные расширения кодирования: b64, xxe, uue

' Автор - Flasher ©
'======================= Путь к UUDeView ========================
UUDev = """%COMMANDER_PATH%\Utils\uudeview\uudeview.exe"""
'======================= Путь к UUEnView ========================
UUEnv = """%COMMANDER_PATH%\Utils\uudeview\uuenview.exe"""
'======================== Путь к TCFS2 ==========================
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'================================================================
L = vbNewLine
Set SHA = CreateObject("Shell.Application")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
A = WSH.RegRead(P) : If A > 0 Then WSH.RegWrite P, 0, "REG_DWORD"
Clip = Trim(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text"))
Temp = SHA.NameSpace(WSH.ExpandEnvironmentStrings("%TEMP%")).Self.Path
If Clip <> "" Then
  Clip = Replace(Replace(Clip, " " & L, L), L & " ", L) : Search = InStr(Clip, "begin ")
  If (Search And IsNumeric(Mid(Clip, Search + 8, 2))) Or InStr(Clip, L & "Content-Transfer-Encoding:") Then
    File = Temp & "\" & FSO.GetTempName
    Set F = FSO.OpenTextFile(File, 2, True) : F.Write Trim(Clip) : Set SHA = Nothing : F.Close
    WSH.Run UUDev & " -i -m +o -c """ & File & """", 0, True : WSH.Exec(TCFS2 & " /ef tcm(540)")
    With CreateObject("InternetExplorer.Application")
      .Navigate("about:blank") : .document.parentWindow.clipboardData.setData "text", ""
      .ExecWB 45, 2 : .Quit
    End With : If A > 0 Then WSH.RegWrite P, A, "REG_DWORD"
    Quit
  End If
End If
With WScript.Arguments
  C = .Count : If C = 0 Then Quit
  List = .Item(0) : If C > 1 Then Ext = .Item(1) Else Ext = " "
End With
Do Until Ext = "b64" Or Ext = "xxe" Or Ext = "uue"
  Ext = InputBox(L & "Введите одно из расширений формата возможного кодирования:" & L & _
  "b64, uue, xxe","Кодирование") : If Trim(Ext) = "" Then Quit
Loop : E = "7z|7zip|zip|rar|arc|cab|nz|pea|bz|bzip|bz2|bzip2|arj|tar|gz|gza|gzi|pzip|tgz|ace|uc2"
Select Case Ext
  Case "b64" : Code = " -b " : Case "uue" : Code = " -u " : Case "xxe" : Code = " -x "
End Select
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, L)
  If FSO.FileExists(F) Then
    Set File = FSO.GetFile(F).OpenAsTextStream(1, -2) : RF = File.ReadAll
    If InStr(RF, L & "begin ") Or InStr(RF, L & "Content-Transfer-Encoding:") Or _
    InStr(RF, L & "_=_ Part ") Then
      WSH.Run UUDev & " -i -m +o """ & F & """", 0, True
    Else
      If C = 3 Then
        If InStr(E, LCase(FSO.GetExtensionName(F))) = 0 Then
          NF = Temp & "\" & FSO.GetBaseName(F) & ".zip" : Set ZIP = FSO.CreateTextFile(NF)
          ZIP.Close : Set ZIP = Nothing
          Set ArchDir = SHA.NameSpace(NF) : ArchDir.CopyHere F, 20
          Size = 0 : Set AF = ArchDir.ParseName(FSO.GetFileName(F))
          On Error Resume Next : Err.Number = 424
          Do While Err.Number = 424 And Size <> FSO.GetFile(F).Size : Err.Number = 0
            Set AF = ArchDir.ParseName(FSO.GetFileName(F)) : Size = AF.Size
          Loop : On Error Goto 0
          WScript.Sleep 10 : Set AF = Nothing : Set ArchDir = Nothing : F = NF
        End If
      End If : WSH.Run UUEnv & Code & "-o """ & F & """", 0, True
      N = FSO.GetFileName(F) : BN = FSO.GetBaseName(F) : NF = BN & "." & Ext
      If Not FSO.FileExists(NF) Then FSO.GetFile(BN & ".001").Name = NF
      If Ext = "b64" Then
        FN = WSH.CurrentDirectory & "\" & NF : Set CF = FSO.OpenTextFile(FN) : CF.SkipLine
        If CF.ReadLine = "_=_ " Then
          Base = CF.ReadAll : CF.Close : Set CF = Nothing : Set CF = FSO.OpenTextFile(FN, 2)
          CF.Write "MIME-Version: 1.0" & L & _
          "Content-Type: application/octet-stream; name=""" & N & """" & L & _
          "Content-Transfer-Encoding: base64" & L & _
          "Content-Disposition: attachment; filename=""" & N & """" & L & L & _
          Mid(Base, InStr(Base, L & L) + 4)
        End If : CF.Close : Set CF = Nothing : If C = 3 Then FSO.DeleteFile F
      End If
    End If : File.Close : Set File = Nothing : RF = ""
  End If : WSH.Exec(TCFS2 & " /ef tcm(540)")
Next : If A > 0 Then WSH.RegWrite P, A, "REG_DWORD" : Quit
Sub Quit : Set FSO = Nothing : Set WSH = Nothing : Set SHA = Nothing : WScript.Quit : End Sub

UUDeview + UUEnview
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 3 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