我计划明天使用 JavaScript 参加信息学竞赛 (BIO)。但是,我不能指望考官拥有一个带有像样 JavaScript 引擎的浏览器,所以我希望改用微软的 JScript。
但是,坦率地说,文档是废话。有人可以发布一些示例代码,读取一行文本,调用foo(string)
它,并将输出回显到命令行吗?
同样,我如何实际运行它?会wscript.exe PATH_TO_JS_FILE
成功吗?
我计划明天使用 JavaScript 参加信息学竞赛 (BIO)。但是,我不能指望考官拥有一个带有像样 JavaScript 引擎的浏览器,所以我希望改用微软的 JScript。
但是,坦率地说,文档是废话。有人可以发布一些示例代码,读取一行文本,调用foo(string)
它,并将输出回显到命令行吗?
同样,我如何实际运行它?会wscript.exe PATH_TO_JS_FILE
成功吗?
如果您使用的是命令行,我会使用CSCRIPT.EXE
. ie:CSCRIPT.EXE myscript.js
这是因为WScript.Echo
fromWSCRIPT
会创建一个对话框,并且 fromCSCRIPT
会向控制台输出一行。在命令窗口 (CMD) 中运行它。
从控制台读取一行到变量中:
var x = WScript.StdIn.ReadLine();
TextStream 对象StdIn
在哪里。还有一个可以用来代替...StdOut
WScript.Echo()
将输出写入foo(x)
控制台:(必须在 下运行CSCRIPT
)
WScript.Echo(foo(x));
您可以使用该WScript
对象来确定您在哪个引擎下运行,这里有一个问题/答案(VBScript,但在 JScript 下使用相同的对象)。
如果你想确保你的程序只在命令行中运行,你可以使用WScript.StdIn
和WScript.StdOut
对象/属性:
var myString = WScript.StdIn.ReadLine();
WScript.StdOut.WriteLine(myString);
并运行它cscript.exe
。但是如果你想让它成为一个 GUI 程序,考虑到 JScript 没有InputBox
像VBScript
. 但是,如此处所述,我们可以使用Windows 脚本宿主 (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 应用程序 (HTA)创建更精细的 GUI。