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 Previous  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
Flasher



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

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

Rodny wrote:
Кстати, все варианты через MhtUnPack у меня работать отказываются.
Оно и понятно. Если они повязаны на одном плагине, то достаточно было эксперимента с b64.

Вопрос к обоим: а вход по Enter (отдельно от скриптов) с учётом метода (+ 256) в эти файлы производится?
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:40    Post subject: Reply with quote

Flasher wrote:
а вход по Enter (отдельно от скриптов) с учётом метода (+ 256) в эти файлы производится?
У меня тоже изначально 415 в параметрах, входа по Enter нет.
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:42    Post subject: Reply with quote

Flasher
Нет. Стоит 415 = дефолтное волшебное число MhtUnPack

Quote:
Оно и понятно. Если они повязаны на одном плагине, то достаточно было эксперимента с b64.
Не совсем. Некоторые куски кода с форума у меня выдавали нерабочие файлы, если расширение ставилось .b64, а с расширением .uue распаковывались правильно.

Rodny
Quote:
Ошибка чтения диска.
Попробуй где-нибудь ближе к началу вставить строку TCS.Pause=500

Last edited by Tol!k on Sun Oct 17, 2010 18:57; 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 18:56    Post subject: Reply with quote

Tol!k
Ага, поставил после F.Close, заработало.
Back to top
View user's profile Send private message
Volniy



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

Post (Separately) Posted: Mon Oct 18, 2010 00:14    Post subject: Reply with quote

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


Embarassed В спешке не тот фрагмент скопировал, исправлю. Мне кажется, что метод достаточно полезный. Вот и решил таким образом о нем напомнить.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Oct 22, 2010 03:53    Post subject: Reply with quote

Quote:
' Получение в текущей папке файла из кодированного текста
' буфера обмена в виде B64/MIME/UUD/UUE/XXD/XXE/BinHex/AtoB/BtoA

' Автор - Flasher ©
'===============================================

Dim FSO, WSH, F, TF
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
TempFolder = WSH.ExpandEnvironmentStrings("%TEMP%") & "\0"
If Not FSO.FolderExists(TempFolder) Then FSO.CreateFolder TempFolder
TempFile = TempFolder & "\" & FSO.GetTempName
NewFile = TempFolder & "\*.*"
Set F = FSO.OpenTextFile(TempFile, 2, True)
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 = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
F.Write Clip
F.Close
Set TF = WSH.Exec("%COMMANDER_PATH%\Utils\Fcode32\fcode32.exe " & TempFile)
TF.Terminate
FSO.DeleteFile TempFile, 1
If FSO.GetFolder(TempFolder).Files.Count > 0 Then _
FSO.MoveFile NewFile, WSH.CurrentDirectory Else WScript.Quit
FSO.DeleteFolder TempFolder, 1
WSH.SendKeys "^R"
If A > 0 Then WSH.RegWrite P, A, "REG_DWORD"
Set FSO = Nothing
Set WSH = Nothing
WScript.Quit
Ссылка на прогу
Отмеченное красным цветом заменить на свой путь к утилите.
Back to top
View user's profile Send private message
Total7zip



Joined: 27 Nov 2010
Posts: 287

Post (Separately) Posted: Tue Mar 22, 2011 15:21    Post subject: Reply with quote

почитал, попробовал разные ваши варианты и хочу предложить свой, с рядом улучшений

Code:

// File: DecodeFromClipboard.js
// Распаковывает mime, uue, b64 текст
// скопированный в буфер обмена в текущую папку
//
// Для работы нужен: Script Helper ActiveX for TC
// http://wincmd.ru/plugring/script_helper.html
//
// В этой версии для работы не нужны WCX плагины (MhtUnPack.wcx)
// Если объект TCSCRIPT.Helper не зарегистрирован, этот скрипт временно
// зарегистрирует его. см. ниже переменную TCWSHELP_PATH
// Корректно обрабатывается ситуация, если файл уже существует.
// Временный файл корректно удаляется, панель TC обновляется.
//
// (c) 2010, lev, Tol!k, Andrey_A, Volniy
// (c) 2011, Total7zip
// Обсуждение: http://forum.wincmd.ru/viewtopic.php?t=13531


//путь к Script Helper ActiveX for TC
var TCWSHELP_PATH = "%COMMANDER_PATH%\\Utils\\TC\\TCWSHelp\\TCWSHelp.exe";

var tcHelper = null;
var wshShell = null;
var bUnreg = false;

try
{
   tcHelper = WScript.CreateObject("TCSCRIPT.Helper");
}
catch(e)
{
    //если TCWSHelp.exe не зарегистрирован - регистрируем его
    wshShell = WScript.CreateObject("WScript.Shell");
    wshShell.Run(TCWSHELP_PATH + " /REGSERVER", 1, true);
    tcHelper = WScript.CreateObject("TCSCRIPT.Helper");
    bUnreg = true;
}

//создаем в текушей папке временный файл и пишем в него содержимое буфера обмена
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var tempFile = tcHelper.GetSrcPath () + "\\" + fso.GetTempName();
var f = fso.CreateTextFile(tempFile, true);
f.Write (tcHelper.GetTextFromClip ());
f.Close ();
f = null;

tcHelper.SetSrcPath    (tempFile);

//посылаем команду, без ожидания завершения, TC показывает диалог
tcHelper.SendCommand   ("cm_Decode", false);
//убираем путь в диалоге - нам надо декодировать в текущую папку
tcHelper.SendKeystroke ("{BKSP}"); 
tcHelper.SendKeystroke ("{Enter}"); //нажимаем ОК в диалоге

//удаляем временный файл, try нужен, чтоб дождаться пока TC завершит декодирование
while (true)
{
    try
    {
        WScript.Sleep (1000);
        fso.DeleteFile (tempFile);         
        break;
    }
    catch(e)
    {
    }
}

tcHelper.SendCommand ("cm_RereadSource", false);

//чистим, удаяем объекты.
fso = null;
tcHelper = null;
if (bUnreg)
{
    //если TCWSHelp.exe не был зарегистрирован - разрегистрируем его
    wshShell.Run(TCWSHELP_PATH + " /UNREGSERVER", 1, true);
}
wshShell = null;
WScript.Quit();

_________________
Total7zip - архиваторный+content+lister плагин, 0.8.5.2
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Mar 22, 2011 17:51    Post subject: Reply with quote

Total7zip wrote:
Code:
WScript.Sleep (1000);
Если кодированного текста много, этого может не хватить.
Back to top
View user's profile Send private message
Total7zip



Joined: 27 Nov 2010
Posts: 287

Post (Separately) Posted: Tue Mar 22, 2011 17:54    Post subject: Reply with quote

вы не правы.
обратите внимание, что этот код вызывается в цикле.
до тех пор пока TC работает с файлом fso.DeleteFile возвращает ошибку и цикл продолжается.
_________________
Total7zip - архиваторный+content+lister плагин, 0.8.5.2
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Mar 22, 2011 18:00    Post subject: Reply with quote

Ага, есть такое дело. Может, тогда и слип поменьше поставить, 500, например?
Back to top
View user's profile Send private message
Total7zip



Joined: 27 Nov 2010
Posts: 287

Post (Separately) Posted: Tue Mar 22, 2011 18:05    Post subject: Reply with quote

я думаю, меньше секунды рисковано.
во-первых я не знаю насколько быстро TC захватит файл после того как мы посылаем Enter
Code:
tcHelper.SendKeystroke ("{Enter}");

возможно, если спешить, скрипт удалит файл раньше чем TC успеет обратиться к нему.
во-вторых этот параметр влияет только на то, когда скрипт удалит ненужный файл - секундой раньше или позже, мне кажется не важно.
новый декодированный файл становится доступен сразу же, независимо от этого вызова Sleep.
_________________
Total7zip - архиваторный+content+lister плагин, 0.8.5.2
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Mar 22, 2011 18:15    Post subject: Reply with quote

Total7zip wrote:
во-первых я не знаю насколько быстро TC захватит файл после того как мы посылаем Enter
Предлагаю проверить. )
Total7zip wrote:
возможно, если спешить, скрипт удалит файл раньше чем TC успеет обратиться к нему.
Это вряд ли. Пол секунды - это не так уж и быстро.
С остальным согласен.
Но мне работа моего скрипта больше нравится. Smile
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun Jul 08, 2012 14:01    Post subject: Reply with quote

Flasher wrote:
' Получение в текущей папке файла из кодированного текста
' буфера обмена в виде B64/MIME/UUD/UUE/XXD/XXE/BinHex/AtoB/BtoA

' Автор - Flasher ©


не может выцепить имена файлов из кодов, созданных uuencode.exe

Code:
---------------------------
Notice!
---------------------------
The default output filename was not found!
Encoded contents may be corrupted.
 Fastcode will save the output file using the input filename.
---------------------------
ОК   
---------------------------


примеры http://www.google.com/search?q=%22begin+0666%22+site%3Aforum.ru-board.com

зы
из-за кириллицы
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jul 08, 2012 15:00    Post subject: Reply with quote

Tol!k
А можно не гугл, а ссылки на конкретные коды?
Back to top
View user's profile Send private message
Tol!k



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

Post (Separately) Posted: Sun Jul 08, 2012 15:07    Post subject: Reply with quote

3 штуки на странице
http://forum.ru-board.com/topic.cgi?forum=5&topic=39064&start=80
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  Next
Page 2 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