Страница 1 из 3
Распаковка mime, uue, b64
Добавлено: Ср окт 13, 2010 16:55
Lev
В последнее время на страницах форума всё чаще выкладываются файлы в mime и т.п. кодировке. Мне чуть надоело их копировать-сохранять-распаковывать, и я решил предоставить это дело ТС. Теперь всё что требуется - скопировать текстовку со страницы, выбрать желаемую директорию и нажать кнопку скрипта.
Код: Выделить всё
' File: Unpack_b64.vbs
' Description: Распаковывает mime, uue, b64 текст
' скопированный в буфер обмена в текущую папку
' Requirements: WSH Helper for TC by Volniy
' Copyright: (c) 2010, lev
Set TCS = CreateObject("TCSCRIPT.Helper")
Set FSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
TCS.Wait=True
TempFile=TCS.GetSrcPath & "\temp.b64"
Set F = fso.CreateTextFile(TempFile, True)
F.Write TCS.GetTextFromClip
F.Close
'к сожалению у меня не заработало выделение файла
'по команде cm_LoadSelectionFromClip,
'но желающие могут поэкпериментировать
'TCS.SetTextToClip(TempFile)
'TCS.Pause = 1000
'TCS.SendCommand "cm_LoadSelectionFromClip",True
'TCS.Pause = 1000
'костыль - выделение файла через коммандную строку
TCS.SendKeystroke ("cd " & TempFile)
TCS.SendKeystroke "{Enter}"
TCS.SendCommand ("cm_Decode")
TCS.SendKeystroke "{BKSP}"
TCS.SendKeystroke "{Enter}"
Set F = fso.GetFile(TempFile)
F.Delete
Set TCS = Nothing
Set FSO = Nothing
WScript.Quit
Добавлено: Ср окт 13, 2010 17:07
Avada
Lev
О, это ценно! Остаётся порекомендовать выкладывающим файлы в MIME хотя бы иногда давать ссылку на этот пост.
Добавлено: Ср окт 13, 2010 19:10
Lev
Извиняюсь, как обычно, позабыл о существовании кириллических путей, и кириллических раскладок клавиатуры. Попытаюсь поправить позже.
:!:
Добавлено: Ср окт 13, 2010 19:25
Tol!k
Для работы этого варианта нужно, чтобы ТС умел _распаковывать_ .uue
например, с помощью MhtUnPack.wcx
Код: Выделить всё
' Description: Распаковывает mime, uue, b64 текст
' из буфера обмена в текущую папку
' Requirements: WSH Helper for TC by Volniy
' Based on lev's code (c) 2010
Set TCS = CreateObject("TCSCRIPT.Helper")
Set FSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
TCS.Wait = True
TempFile=TCS.GetSrcPath & "\TextFromClip.tmp.uue"
Set F = fso.CreateTextFile(TempFile, True)
F.Write TCS.GetTextFromClip
F.Close
TCS.SendCommand "cm_RereadSource"
TCS.SetTextToClip(TempFile)
TCS.SendCommand "cm_LoadSelectionFromClip", True
TCS.SendCommand "cm_UnpackFiles"
TCS.SendKeystroke "{BS}{Enter}"
Set F = fso.GetFile(TempFile)
F.Delete
TCS.SendCommand "cm_RereadSource"
Set TCS = Nothing
Set FSO = Nothing
WScript.Quit
Работает с кириллицей
Добавлено: Ср окт 13, 2010 20:32
Andrey_A
Идея очень интересная и актуальная, но ни один из предложенных скриптов не хотел срабатывать, пришлось методом тыка искать что не так, в итоге с этим куском заработало, может кому пригодится:
кусок между строками F.Close и Set F = fso.GetFile(TempFile)
Код: Выделить всё
TCS.Pause = 300
TCS.SendCommand ("cm_RereadSource")
TCS.SetTextToClip(TempFile)
TCS.SendCommand "cm_LoadSelectionFromClip", True
TCS.SendKeystroke "{Down}"
TCS.SendCommand "cm_UnpackFiles"
TCS.Pause = 120
TCS.SendKeystroke "{BS}"
TCS.Pause = 120
TCS.SendKeystroke "{Enter}"
строка TCS.SendKeystroke "{Down}" позволяет распаковывать в пустой папке
Добавлено: Вс окт 17, 2010 15:36
Volniy
Вариант первого в теме скрипта с использованием метода
SetSrcPath
Для этого варианта понадобится
Script Helper Beta12Код: Выделить всё
Set TCS = CreateObject("TCSCRIPT.Helper")
Set FSO = CreateObject("Scripting.FileSystemObject")
TempFile=TCS.GetSrcPath & "\temp.b64"
Set F = fso.CreateTextFile(TempFile, True)
F.Write TCS.GetTextFromClip
F.Close
'SetSrcPath (SrcPath, [InNewTab]) - дает указание установить
'желаемый путь в панели-источнике TC. Если указать в качестве первого
'параметра путь к файлу, то кроме перехода к папке, где расположен
'данный файл, будет дополнительно произвелено выделение файла(!) в
'панели-источнике. Если необязательный параметр InNewTab установить
'в True, тогда указываемый путь будет открыт в новой вкладке.
TCS.SetSrcPath TempFile
TCS.SendCommand ("cm_Decode"), False
TCS.SendKeystroke "{BKSP}"
TCS.SendKeystroke "{Enter}"
TCS.Sleep 500
fso.DeleteFile TempFile
Set TCS = Nothing
Set FSO = Nothing
WScript.Quit
Добавлено: Вс окт 17, 2010 17:30
Rodny
Volniy
Выдаётся сообщение "Функция не поддерживается."
При этом в текущей папке кратковременно появляется папка "temp.b64" и в ней файл с именем зашифрованного.
Затем папка удаляется.
Пример b64, с любым другим так же.
Script Helper Beta12, раз-/регистрировал.
Добавлено: Вс окт 17, 2010 17:41
Flasher
Rodny
А у меня сработало. Тот же Хелпер.
Volniy
А ридмишный коммент по SetTrgPath там для чего фигурирует?
Добавлено: Вс окт 17, 2010 17:44
Tol!k
Rodny, у тебя установлен MhtUnPack.wcx (в .b64 можно войти) ?
Volniy писал(а):Если указать в качестве первого параметра путь к файлу, то кроме перехода к той папке, где расположен данный файл, будет дополнительно произвелено выделение файла(!) в целевой панели.
Если файл является "архивом" в понимании ТС, то происходит вход а архив и, конечно, ничего не выделяется
Добавлено: Вс окт 17, 2010 17:52
Flasher
Tol!k
Я ведь не зря спросил про SetTrgPath. В скрипте-то он не используется. Поэтому тут не важно, входит как в архив или нет.
Добавлено: Вс окт 17, 2010 17:56
Tol!k
Используется
TCS.SetSrcPath, логика работы у них одинаковая.
SetSrcPath (SrcPath, [InNewTab]) - дает указание установить же-
лаемый путь в панели-источнике TC. Если указать в качестве первого
параметра путь к файлу, то кроме перехода к папке, где расположен
данный файл, будет дополнительно произвелено выделение файла(!) в
панели-источнике. Если необязательный параметр InNewTab установить
в True, тогда указываемый путь будет открыт в новой вкладке.
Вместо выделения, ТС входит в архив. Поэтому скрипт и не работает.
Нужно добавить строку
Код: Выделить всё
TCS.SetSrcPath TempFile
'для выхода из "архива"
TCS.SendKeystroke "{BS}"
TCS.SendCommand ("cm_Decode"), False
Добавлено: Вс окт 17, 2010 18:09
Flasher
Ну да, логика одна, разница только в панелях. Просто увидел в твоём скрипте он также используется, поэтому странно стало. Ну а проблема решается прописью в wincmd.ini
b64=x+256,%COMMANDER_PATH%\Plugins\wcx\MhtUnPack\MhtUnPack.wcx
или поменять в скрипте
TempFile=TCS.GetSrcPath & "\temp.b64"
на
TempFile=TCS.GetSrcPath & "\temp.uue"
Добавлено: Вс окт 17, 2010 18:20
Tol!k
Правильное волшебное число прописано, по Enter`y входа нет.

Но скрипт не работает – происходит входит в архив
Добавлено: Вс окт 17, 2010 18:27
Flasher
Хм, кстати, я этот касяк замечаю ещё у ряда архивных плагинов, в связанные файлы которых очень бы не хотелось входить по Enter. Ну что ж, тогда вариант с переименованием расширения, которое, разумеется, не прописано в ini.
Добавлено: Вс окт 17, 2010 18:32
Rodny
Tol!k
Да, MhtUnPack есть, "TCS.SendKeystroke "{BS}"" помогла. Спасибо.
Кстати, все варианты через MhtUnPack у меня работать отказываются. Говорят:
Код: Выделить всё
---------------------------
TextFromClip.tmp.uue
---------------------------
Ошибка чтения диска.
---------------------------
ОК Отмена
---------------------------