Tipulatoid
Пробегала как то давно подобная темка на RSDN...
Консольный вариант меня как то не впечатлил, поэтому, использовав эту идею, сделал HTA приложение: http://mozers.net.ru/files/JSCalc.rar
Добавлено:
Вот, нашел таки этот скрипт, который послужил мне отправной точкой: [more]JScript interpretator.js
Код: WScript.Echo([no]"JScript interpretator"[/no]);
WScript.Echo([no]"====================="[/no]);
WScript.Echo([no]"(c)2000 O.Mihailik\n"[/no]);
WScript.Echo([no]"type 'exit()' to finish.\n\n"[/no]);
var FS=new ActiveXObject([no]"Scripting.FileSystemObject"[/no]);
var console=FS.OpenTextFile([no]"con"[/no]);
var Finish=false;
var command;
var Shell=new ActiveXObject([no]"Wscript.Shell"[/no]);
var Network=new ActiveXObject([no]"Wscript.Network"[/no]);
function JSstring(str)
{ str=String(str);
var result=[no]""[/no];
for( var i=0;
i<str.length;
i++ )
{ if( str.substr(i,1)==[no]"\n"[/no] )
{ result+=[no]"\\n"[/no];
i++;
};
else if( str.substr(i,1)==[no]"\r"[/no] )
result+=[no]"\\r"[/no];
else if( str.substr(i,1)==[no]">"[/no] )
result+=[no]"\\076"[/no];
else if( str.substr(i,1)==[no]"\""[/no] )
result+=[no]"\\\""[/no];
else if( str.substr(i,1)==[no]"\'"[/no] )
result+=[no]"\\'"[/no];
else
result+=str.substr(i,1);
};
return result;
};
function exit()
{ Finish=true;
};
while( !Finish )
{ var command=console.ReadLine();
while( command.substr(command.length-1)==[no]"_"[/no] )
{ command=command.substr(0,command.length-1);
command+=[no]"\n"[/no]+console.ReadLine();
};
var result;
try
{ with( WScript ) with( Math ) with ( Shell ) with ( Network ) with ( FS )
result=eval(command);
if( result!=null )
WScript.Echo([no]" ="[/no]+String(result));
WScript.Echo([no]" O.K.\n"[/no]);
}
catch(error)
{ WScript.Echo([no]" ERROR:\b"[/no]);
WScript.Echo([no]" "[/no]+error.description+[no]"\n"[/no]); };
};
Пробегала как то давно подобная темка на RSDN...
Консольный вариант меня как то не впечатлил, поэтому, использовав эту идею, сделал HTA приложение: http://mozers.net.ru/files/JSCalc.rar
Добавлено:
Вот, нашел таки этот скрипт, который послужил мне отправной точкой: [more]JScript interpretator.js
Код: WScript.Echo([no]"JScript interpretator"[/no]);
WScript.Echo([no]"====================="[/no]);
WScript.Echo([no]"(c)2000 O.Mihailik\n"[/no]);
WScript.Echo([no]"type 'exit()' to finish.\n\n"[/no]);
var FS=new ActiveXObject([no]"Scripting.FileSystemObject"[/no]);
var console=FS.OpenTextFile([no]"con"[/no]);
var Finish=false;
var command;
var Shell=new ActiveXObject([no]"Wscript.Shell"[/no]);
var Network=new ActiveXObject([no]"Wscript.Network"[/no]);
function JSstring(str)
{ str=String(str);
var result=[no]""[/no];
for( var i=0;
i<str.length;
i++ )
{ if( str.substr(i,1)==[no]"\n"[/no] )
{ result+=[no]"\\n"[/no];
i++;
};
else if( str.substr(i,1)==[no]"\r"[/no] )
result+=[no]"\\r"[/no];
else if( str.substr(i,1)==[no]">"[/no] )
result+=[no]"\\076"[/no];
else if( str.substr(i,1)==[no]"\""[/no] )
result+=[no]"\\\""[/no];
else if( str.substr(i,1)==[no]"\'"[/no] )
result+=[no]"\\'"[/no];
else
result+=str.substr(i,1);
};
return result;
};
function exit()
{ Finish=true;
};
while( !Finish )
{ var command=console.ReadLine();
while( command.substr(command.length-1)==[no]"_"[/no] )
{ command=command.substr(0,command.length-1);
command+=[no]"\n"[/no]+console.ReadLine();
};
var result;
try
{ with( WScript ) with( Math ) with ( Shell ) with ( Network ) with ( FS )
result=eval(command);
if( result!=null )
WScript.Echo([no]" ="[/no]+String(result));
WScript.Echo([no]" O.K.\n"[/no]);
}
catch(error)
{ WScript.Echo([no]" ERROR:\b"[/no]);
WScript.Echo([no]" "[/no]+error.description+[no]"\n"[/no]); };
};