Да. Ты прав. Боевые функции для программистов, Универсальные для домохозяек, которым не надо исполнять код здесь и сейчас без перекодирования с временными файлами.
Вообщем - глубоко передаланный твой код декодирования и мой личный код кодирования через MSHTA-JS.
Принимает данные из буфера обмена и в качестве входного параметра. Обратно, в качестве ответа, ничего не возвращает 
Временные файлы не создаются.
Encode URI
Option Explicit
Const WshRunning = 0,WshFailed = 1:Dim cmd,text,i,objShell
Dim strCmd, objWnd, objParent, strSignature, output, wowError, exec, arr, j, temp
wowError=False
Set objShell = WScript.CreateObject("WScript.Shell")
Sub RunCScriptHidden()
strSignature = Left(CreateObject("Scriptlet.TypeLib").Guid, 38)
GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}").putProperty strSignature, Me
objShell.Run ("""" & Replace(LCase(WScript.FullName), "wscript", "cscript") & """ //nologo """ & WScript.ScriptFullName & """ ""/signature:" & strSignature & """"), 0, True
End Sub
Sub WshShellExecCmd()
For Each objWnd In CreateObject("Shell.Application").Windows
If IsObject(objWnd.getProperty(WScript.Arguments.Named("signature"))) Then Exit For
Next
Set objParent = objWnd.getProperty(WScript.Arguments.Named("signature"))
objWnd.Quit
Set exec = CreateObject("WScript.Shell").Exec(objParent.strCmd)
While exec.Status = WshRunning
WScript.Sleep 50
Wend
Dim err
If exec.ExitCode = WshFailed Then
err = exec.StdErr.ReadAll
Else
output = Split(exec.StdOut.ReadAll,Chr(10))
End If
If err="" Then
objParent.text = output(UBound(output)-1) 'array of results, you can: output(0) Join(output) - Usually needed is the last
Else
objParent.wowError = err
End If
WScript.Quit
End Sub
text=CreateObject("HTMLFile").parentWindow.clipboardData.GetData("text")
text=Replace(text,"\","\\")
text=Replace(text,"'","\%27")
text=Replace(text,Chr(34),"%22")
text=Replace(text,"^","%5E")
cmd="for /f ""usebackq"" %i in " & _
"(`mshta ""javascript:Code(close(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(" & _
"encodeURIComponent('" & text & "')" & _
")));""`) do set e=%i&set e=!e:'=%27!&set e=!e:(=%28!&set e=!e:)=%29!&echo !e!":strCmd = "%comspec% /v /c " & cmd
If WScript.Arguments.Named.Exists("signature") Then WshShellExecCmd
RunCScriptHidden
If wowError=False Then
text=text
For j = 0 To 13
text=Replace(text,Chr(j),"")
Next
objShell.popup(text)
Else
objShell.popup("Error=" & wowError)
End If
Encode with IE
Option Explicit
Dim text,ws,F,FSO,path,name,j
text=CreateObject("HTMLFile").parentWindow.clipboardData.GetData("text")
Dim oIE: Set oIE = CreateObject("InternetExplorer.application")
With oIE
.Visible = False
.Navigate ("")
.Offline = True
End With
Do Until oIE.ReadyState = 4
wscript.sleep 100
Loop
For j = 0 To 13 'text=Replace(text,Chr(13),"")
text=Replace(text,Chr(j),"")
Next
text=Replace(text,"\","\\")
text=Replace(text,Chr(34),"%22")
text=Replace(text,"(","%28")
text=Replace(text,")","%29")
oIE.Document.parentWindow.execScript("var ultimateAnswer = function(){return encodeURIComponent(""" & text & """);};ultimateAnswer()") 'Get Return value
text = oIE.Document.parentWindow.ultimateAnswer()
'text=Replace(text,"[","%5B")
'text=Replace(text,"]","%5D")
'text=Replace(text," ","%20")
'text=Replace(text,"+","%2B")
text=Replace(text,"'","`%27")
text=Replace(text,"%2522","`%22")
text=Replace(text,"%2528","%28")
text=Replace(text,"%2529","%29")
text= Chr(34) & text & Chr(34)
objShell.popup(text)
oIE.Quit
Decode URI
Option Explicit
Dim Kod
If WScript.Arguments.Count()=0 Then
Kod=CreateObject("HTMLFile").parentWindow.clipboardData.GetData("text")
Else
Kod=WScript.Arguments(0)
End if
if IsNull(Kod) Then
WScript.Echo "No data to execute.."
Else
Dim chunk,Recoded,k1,k2,k3,i:i=0:Dim arr:arr=Split(Kod,"%")
Do While i <= UBound(arr)
if i<>0 Then
chunk = Left(arr(i),2)
If "&H"&Left(chunk,2)>=128 then
arr(i)="":i=i+1:chunk = chunk & Left(arr(i),2)
If "&H"&Left(chunk,2)<224 then
k1=Cint("&H"&Left(chunk,2)) mod 32
k2 = Cint("&H"&Mid(chunk,3,2)) mod 64
Recoded=ChrW( k2 + k1 * 64 )
Else
arr(i)="":i=i+1:chunk = chunk & Left(arr(i),4)
k1=Cint("&H"&Left(chunk,2)) mod 16
k2 = Cint("&H"&Mid(chunk,3,2)) mod 32
k3 = Cint("&H"&Mid(chunk,5,2)) mod 64
Recoded=ChrW( k3 + ( k2 + k1 * 64 ) * 64 )
End if
Else Recoded=Chr("&H"&chunk)
End If
arr(i)=Recoded & Mid(arr(i),3)
end if:i=i+1
loop
Kod=Join(arr,""):WScript.Echo Kod
End if
Garric