View previous topic :: View next topic |
Author |
Message |
Lev

Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Wed Oct 13, 2010 16:55 Post subject: Распаковка mime, uue, b64 |
|
|
В последнее время на страницах форума всё чаще выкладываются файлы в mime и т.п. кодировке. Мне чуть надоело их копировать-сохранять-распаковывать, и я решил предоставить это дело ТС. Теперь всё что требуется - скопировать текстовку со страницы, выбрать желаемую директорию и нажать кнопку скрипта.
Code: | ' 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 |
|
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Wed Oct 13, 2010 17:07 Post subject: |
|
|
Lev
О, это ценно! Остаётся порекомендовать выкладывающим файлы в MIME хотя бы иногда давать ссылку на этот пост. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Lev

Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Wed Oct 13, 2010 19:10 Post subject: |
|
|
Извиняюсь, как обычно, позабыл о существовании кириллических путей, и кириллических раскладок клавиатуры. Попытаюсь поправить позже. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Wed Oct 13, 2010 19:25 Post subject: :!: |
|
|
Для работы этого варианта нужно, чтобы ТС умел _распаковывать_ .uue
например, с помощью MhtUnPack.wcx
Code: | ' 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 | Работает с кириллицей
Last edited by Tol!k on Wed Oct 13, 2010 21:26; edited 1 time in total |
|
Back to top |
|
 |
Andrey_A

Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Wed Oct 13, 2010 20:32 Post subject: |
|
|
Идея очень интересная и актуальная, но ни один из предложенных скриптов не хотел срабатывать, пришлось методом тыка искать что не так, в итоге с этим куском заработало, может кому пригодится:
кусок между строками F.Close и Set F = fso.GetFile(TempFile)
Code: | 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}" позволяет распаковывать в пустой папке |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sun Oct 17, 2010 15:36 Post subject: |
|
|
Вариант первого в теме скрипта с использованием метода SetSrcPath
Для этого варианта понадобится Script Helper Beta12 Code: | 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 |
Last edited by Volniy on Mon Oct 18, 2010 00:17; edited 1 time in total |
|
Back to top |
|
 |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Sun Oct 17, 2010 17:30 Post subject: |
|
|
Volniy
Выдаётся сообщение "Функция не поддерживается."
При этом в текущей папке кратковременно появляется папка "temp.b64" и в ней файл с именем зашифрованного.
Затем папка удаляется.
Пример b64, с любым другим так же.
Script Helper Beta12, раз-/регистрировал. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 17, 2010 17:41 Post subject: |
|
|
Rodny
А у меня сработало. Тот же Хелпер.
Volniy
А ридмишный коммент по SetTrgPath там для чего фигурирует?
Last edited by Flasher on Sun Oct 17, 2010 17:44; edited 1 time in total |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Oct 17, 2010 17:44 Post subject: |
|
|
Rodny, у тебя установлен MhtUnPack.wcx (в .b64 можно войти) ?
Volniy wrote: | Если указать в качестве первого параметра путь к файлу, то кроме перехода к той папке, где расположен данный файл, будет дополнительно произвелено выделение файла(!) в целевой панели. |
Если файл является "архивом" в понимании ТС, то происходит вход а архив и, конечно, ничего не выделяется |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 17, 2010 17:52 Post subject: |
|
|
Tol!k
Я ведь не зря спросил про SetTrgPath. В скрипте-то он не используется. Поэтому тут не важно, входит как в архив или нет. |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Oct 17, 2010 17:56 Post subject: |
|
|
Используется TCS.SetSrcPath, логика работы у них одинаковая.
Quote: | SetSrcPath (SrcPath, [InNewTab]) - дает указание установить же-
лаемый путь в панели-источнике TC. Если указать в качестве первого
параметра путь к файлу, то кроме перехода к папке, где расположен
данный файл, будет дополнительно произвелено выделение файла(!) в
панели-источнике. Если необязательный параметр InNewTab установить
в True, тогда указываемый путь будет открыт в новой вкладке. |
Вместо выделения, ТС входит в архив. Поэтому скрипт и не работает.
Нужно добавить строку Code: | TCS.SetSrcPath TempFile
'для выхода из "архива"
TCS.SendKeystroke "{BS}"
TCS.SendCommand ("cm_Decode"), False |
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 17, 2010 18:09 Post subject: |
|
|
Ну да, логика одна, разница только в панелях. Просто увидел в твоём скрипте он также используется, поэтому странно стало. Ну а проблема решается прописью в wincmd.ini
b64=x+256,%COMMANDER_PATH%\Plugins\wcx\MhtUnPack\MhtUnPack.wcx
или поменять в скрипте
TempFile=TCS.GetSrcPath & "\temp.b64"
на
TempFile=TCS.GetSrcPath & "\temp.uue" |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Oct 17, 2010 18:20 Post subject: |
|
|
Правильное волшебное число прописано, по Enter`y входа нет.
Но скрипт не работает – происходит входит в архив |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 17, 2010 18:27 Post subject: |
|
|
Хм, кстати, я этот касяк замечаю ещё у ряда архивных плагинов, в связанные файлы которых очень бы не хотелось входить по Enter. Ну что ж, тогда вариант с переименованием расширения, которое, разумеется, не прописано в ini. |
|
Back to top |
|
 |
Rodny

Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Sun Oct 17, 2010 18:32 Post subject: |
|
|
Tol!k
Да, MhtUnPack есть, "TCS.SendKeystroke "{BS}"" помогла. Спасибо.
Кстати, все варианты через MhtUnPack у меня работать отказываются. Говорят:
Code: | ---------------------------
TextFromClip.tmp.uue
---------------------------
Ошибка чтения диска.
---------------------------
ОК Отмена
---------------------------
|
|
|
Back to top |
|
 |
|