我计划明天使用JavaScript进入信息学竞赛(BIO)。但是,我不能依赖考官拥有一个体面的JavaScript引擎的浏览器,所以我希望改用微软的JScript。
然而,坦率地说,文件是废话。有人可以发布一些示例代码,这些代码读取一行文本,在其上调用foo(string)
,并将输出回显到命令行吗?
同样,我该如何实际运行它? wscript.exe PATH_TO_JS_FILE
会这样做吗?
答案 0 :(得分:11)
如果您正在使用命令行,我将使用CSCRIPT.EXE
执行脚本。
即:CSCRIPT.EXE myscript.js
这是因为来自WScript.Echo
的{{1}}将创建一个对话框,并从WSCRIPT
输出一行到控制台。在命令窗口(CMD)中运行它。
从控制台读取一行到变量:
CSCRIPT
var x = WScript.StdIn.ReadLine();
是TextStream object的位置。还有StdIn
可用于代替StdOut
...
将WScript.Echo()
的输出写入控制台:(必须在foo(x)
下运行)
CSCRIPT
您可以使用WScript.Echo(foo(x));
对象来确定您正在运行的引擎,有一个问题/答案(VBScript,但在JScript下使用相同的对象)here。
答案 1 :(得分:2)
如果要确保程序仅在命令行中运行,可以使用WScript.StdIn
和WScript.StdOut
对象/属性:
var myString = WScript.StdIn.ReadLine();
WScript.StdOut.WriteLine(myString);
并使用cscript.exe
运行它。但是,如果您希望它成为GUI程序,考虑到JScript没有像InputBox
这样的本机VBScript
函数,则要困难一些。但是,如here所述,我们可以使用Windows Script Host (WSH)。创建一个.wsf
文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<job id="testJScriptInputBox">
<script language="VBScript">
<![CDATA[
Function WSHInputBox(Message, Title, Value)
WSHInputBox = InputBox(Message, Title, Value)
End Function
]]>
</script>
<script language="JScript">
<![CDATA[
var vbOKOnly = 0; // Constants for Popup
var vbInformation = 64;
var title = "InputBox function for JScript";
var prompt = "Enter a string: ";
var WshShell = WScript.CreateObject("WScript.Shell");
var result = WSHInputBox(prompt, title, "New York");
if (result != null)
{ // Cancel wasn't clicked, so get input.
var intDoIt = WshShell.Popup(result,
0,
"Result",
vbOKOnly + vbInformation);
}
else
{ // Cancel button was clicked.
var intDoIt = WshShell.Popup("Sorry, no input",
0,
"Result",
vbOKOnly + vbInformation);
}
]]>
</script>
</job>
并使用cscript.exe
或wscript.exe
运行它。另外,您也可以使用HTML Application (HTA)创建更精美的GUI。