//в test.js написать
var echo = function(msg){WScript.Echo(msg);}
Для VB
'* CScript.cmd
'* copy CScript.vbs %SystemRoot%\System32\CScript.vbs
'* CScript.reg
'; REGEDIT4
';
'; [HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command]
'; @="%SystemRoot%\\System32\\CScript.exe %SystemRoot%\\System32\\CScript.vbs ""%1"" %*"
'* CScript.vbs
OPTION EXPLICIT
Dim Str, Args, i:Str = "5075626C69632046756E6374696F6E20496E636C756465202846696C654E616D65293A"&_
"57697468204372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A656374222"&_
"90D0A4946204E6F74202E46696C654578697374732846696C654E616D6529205468656E3A575363726970742E4563"&_
"686F202294A0A9AB20ADA520ADA0A9A4A5AD3A20222646696C654E616D653A496E636C7564653D323A57536372697"&_
"0742E517569740D0A496E636C7564653D2E47657446696C652846696C654E616D65292E4F70656E41735465787453"&_
"747265616D2831292E52656164416C6C3A4F4E204552524F5220524553554D45204E4558543A45786563757465476"&_
"C6F62616C28496E636C756465290D0A4966204572722E4E756D626572205468656E3A4572722E436C6561723A4361"&_
"6C6C20436865636B4572722846696C654E616D652C20496E636C756465293A4F4E204552524F5220474F544F20300"&_
"D0A456E6420576974683A456E642046756E6374696F6E3A46756E6374696F6E20436865636B4572722846696C654E"&_
"616D652C20436F6465293A57697468204372656174654F626A65637428224D53536372697074436F6E74726F6C2E5"&_
"36372697074436F6E74726F6C22290D0A2E4C616E67756167653D225642536372697074223A2E6164646F626A6563"&_
"74202257536372697074222C575363726970743A4F4E204552524F5220524553554D45204E4558543A2E616464636"&_
"F646528436F6465290D0A575363726970742E4563686F20228EA1E0A0A1AEE2AAA820E4A0A9ABA020222646696C65"&_
"4E616D6526222822262E4572726F722E4C696E6526222C2022262E4572726F722E436F6C756D6E202B20312026222"&_
"92226766243724C66265F0D0A2E4572726F722E536F7572636526223A2022262E4572726F722E4465736372697074"&_
"696F6E3A436865636B4572723D4572722E4E756D6265723A4572722E436C6561723A4F4E204552524F5220474F544"&_
"F20300D0A575363726970742E5175697420436865636B4572723A456E6420576974683A456E642046756E6374696F6E"
With WScript.Arguments
If .Count > 1 Then
For i = 1 to .Count -1
Args = Args & " " & .Item(i) ' Собрать аргументы в строку
Next
End If
End With
'* Сохранить копию, дописать к файлу функцию Include, выполнить скрипт и востановить его
SwapExec WScript.Arguments(0), Args, Str_Hex(Str, "dec")'* сохранненную копию
Function SwapExec(FileName, Args ,Str)
Dim FSO, TempName, Stream
Set FSO = CreateObject("Scripting.FileSystemObject")' Объявить объект
TempName = FSO.GetTempName ' Имя файла временной копии
FSO.CopyFile FileName, TempName, 0 ' Создать временную копию
Set Stream = FSO.OpenTextFile(FileName,8,0) ' Открыть файл для дозаписи
Stream.WriteLine ' Добавить пустую строку
Stream.WriteLine Str ' Добавить фрагмент к файлу
Stream.Close ' Закрыть файл
ScriptExec FileName, Args ' Выполнить файл
FSO.DeleteFile FileName, 0 ' Удалить файл
FSO.MoveFile TempName, FileName ' Востановить файл из копии
Set Stream = Nothing ' Разрушить объект Stream
Set FSO = Nothing ' Разрушить объект FSO
End Function
Function Str_Hex(Str, Val) ' Если ключь "enc" преобразовываем строку
If Val = "enc" Then ' в ее HEX значение
For Val = 1 To Len(str) ' Читать строку с первого до последнего символа
Str_Hex = Str_Hex & Right("0" & Hex(Asc(Mid(Str, Val, 1))), 2) ' Преобразование в HEX значение
Next
Else ' иначе наоборот HEX значение в строку
For Val = 1 To Len(str) step 2 ' Читать строку с первого до последнего символа
Str_Hex = Str_Hex & Chr("&H" & Mid(str, Val, 2)) ' Преобразование в строку
Next
End if
End Function
Function ScriptExec(FileName, Args)
With CreateObject("WScript.Shell").Exec("cscript.exe /nologo " & Chr(34) & FileName & Chr(34) & Args)' Выполнить комманду
With .StdOut ' Читать стандартный поток вывода
While Not .AtEndOfStream ' до конца потока "EndOfStream"
Wscript.Echo Str_ReCode(.ReadLine, "cp866", "windows-1251")' Передать перекодированный вывод на экран
Wend
End With
With .StdErr ' Читать поток вывода ошибок
While Not .AtEndOfStream ' до конца потока "EndOfStream"
Wscript.Echo Str_ReCode(.ReadLine, "cp866", "windows-1251")' Передать перекодированный вывод на экран
Wend
End With
End With
End Function
Function Str_ReCode(InpStr, InpCode, OutCode)
IF InpCode = "" Then Str_ReCode=InpStr:Exit Function' Если кодировка входящей не указанна выйти
IF OutCode = "" Then OutCode = "windows-1251" ' Кодировка исходящей строки по умолчанию
With CreateObject("ADODB.Stream") ' Объявить объект ADODB
.Charset = OutCode ' Указать кодировку исходящей строки
.Open ' Открыть поток
.Writetext InpStr ' Записать входящую строку
.position = 0 ' Перевести указатель на начало
.Charset = InpCode ' Указать кодировку входящей строки
Str_ReCode = .readText ' Прочитать исходящую строку
End With
End Function
'* End of file