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 

Распаковка mime, uue, b64
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Wed Oct 13, 2010 16:55    Post subject: Распаковка mime, uue, b64 Reply with quote

В последнее время на страницах форума всё чаще выкладываются файлы в 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
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Wed Oct 13, 2010 17:07    Post subject: Reply with quote

Lev
О, это ценно! Остаётся порекомендовать выкладывающим файлы в MIME хотя бы иногда давать ссылку на этот пост.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Wed Oct 13, 2010 19:10    Post subject: Reply with quote

Извиняюсь, как обычно, позабыл о существовании кириллических путей, и кириллических раскладок клавиатуры. Попытаюсь поправить позже.
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Wed Oct 13, 2010 19:25    Post subject: :!: Reply with quote

Для работы этого варианта нужно, чтобы ТС умел _распаковывать_ .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
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Oct 13, 2010 20:32    Post subject: Reply with quote

Идея очень интересная и актуальная, но ни один из предложенных скриптов не хотел срабатывать, пришлось методом тыка искать что не так, в итоге с этим куском заработало, может кому пригодится:
кусок между строками 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
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Oct 17, 2010 15:36    Post subject: Reply with quote

Вариант первого в теме скрипта с использованием метода 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
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Sun Oct 17, 2010 17:30    Post subject: Reply with quote

Volniy
Выдаётся сообщение "Функция не поддерживается."
При этом в текущей папке кратковременно появляется папка "temp.b64" и в ней файл с именем зашифрованного.
Затем папка удаляется.
Пример b64, с любым другим так же.

Script Helper Beta12, раз-/регистрировал.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Oct 17, 2010 17:41    Post subject: Reply with quote

Rodny
А у меня сработало. Тот же Хелпер.

Volniy
А ридмишный коммент по SetTrgPath там для чего фигурирует?


Last edited by Flasher on Sun Oct 17, 2010 17:44; edited 1 time in total
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun Oct 17, 2010 17:44    Post subject: Reply with quote

Rodny, у тебя установлен MhtUnPack.wcx (в .b64 можно войти) ?

Volniy wrote:
Если указать в качестве первого параметра путь к файлу, то кроме перехода к той папке, где расположен данный файл, будет дополнительно произвелено выделение файла(!) в целевой панели.

Если файл является "архивом" в понимании ТС, то происходит вход а архив и, конечно, ничего не выделяется
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Oct 17, 2010 17:52    Post subject: Reply with quote

Tol!k
Я ведь не зря спросил про SetTrgPath. В скрипте-то он не используется. Поэтому тут не важно, входит как в архив или нет.
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun Oct 17, 2010 17:56    Post subject: Reply with quote

Используется TCS.SetSrcPath, логика работы у них одинаковая.
Quote:
SetSrcPath (SrcPath, [InNewTab]) - дает указание установить же-
лаемый путь в панели-источнике TC. Если указать в качестве первого
параметра путь к файлу, то кроме перехода к папке, где расположен
данный файл, будет дополнительно произвелено выделение файла(!) в
панели-источнике. Если необязательный параметр InNewTab установить
в True, тогда указываемый путь будет открыт в новой вкладке.

Вместо выделения, ТС входит в архив. Поэтому скрипт и не работает.
Нужно добавить строку
Code:
TCS.SetSrcPath TempFile

'для выхода из "архива"
TCS.SendKeystroke "{BS}"

TCS.SendCommand ("cm_Decode"), False
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Oct 17, 2010 18:09    Post subject: Reply with quote

Ну да, логика одна, разница только в панелях. Просто увидел в твоём скрипте он также используется, поэтому странно стало. Ну а проблема решается прописью в 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
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun Oct 17, 2010 18:20    Post subject: Reply with quote

Правильное волшебное число прописано, по Enter`y входа нет.

Но скрипт не работает – происходит входит в архив
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Oct 17, 2010 18:27    Post subject: Reply with quote

Хм, кстати, я этот касяк замечаю ещё у ряда архивных плагинов, в связанные файлы которых очень бы не хотелось входить по Enter. Ну что ж, тогда вариант с переименованием расширения, которое, разумеется, не прописано в ini.
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Sun Oct 17, 2010 18:32    Post subject: Reply with quote

Tol!k
Да, MhtUnPack есть, "TCS.SendKeystroke "{BS}"" помогла. Спасибо.

Кстати, все варианты через MhtUnPack у меня работать отказываются. Говорят:
Code:
---------------------------
TextFromClip.tmp.uue
---------------------------
Ошибка чтения диска.
---------------------------
ОК   Отмена   
---------------------------
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  Next
Page 1 of 3

 
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