我正在编写一个在 cscript.exe 中运行的 JScript 程序。是否可以从脚本中运行命令行命令。这真的会让工作变得简单,因为我可以运行某些命令而不是在 jscript 中编写更多代码来做同样的事情。
例如:为了等待按键 10 秒,我可以直接使用 timeout 命令
timeout /t 10
在 jscript 中实现这一点意味着更多的工作。顺便说一句,我在 Vista 和 WSH v5.7
有任何想法吗?谢谢!
我正在编写一个在 cscript.exe 中运行的 JScript 程序。是否可以从脚本中运行命令行命令。这真的会让工作变得简单,因为我可以运行某些命令而不是在 jscript 中编写更多代码来做同样的事情。
例如:为了等待按键 10 秒,我可以直接使用 timeout 命令
timeout /t 10
在 jscript 中实现这一点意味着更多的工作。顺便说一句,我在 Vista 和 WSH v5.7
有任何想法吗?谢谢!
WshShell.Run
您可以使用以下方法执行 DOS 命令:
var oShell = WScript.CreateObject("WScript.Shell");
oShell.Run("timeout /t 10", 1 /* SW_SHOWNORMAL */, true /* bWaitOnReturn */);
如果您特别需要暂停脚本执行,直到按下某个键或超时,您可以使用以下WshShell.Popup
方法完成此操作(带有超时选项的对话框):
var oShell = WScript.CreateObject("WScript.Shell");
oShell.Popup("Click OK to continue.", 10);
但是,此方法在 cscript 下运行时也会显示一个消息框。
本文描述了另一种可能的方法:当用户按下键盘上的键时,如何暂停脚本然后恢复它?简而言之,您可以使用该WScript.StdIn
属性直接从输入流中读取并等待输入。但是,从输入流中读取不支持超时,并且仅在ENTER
按键(不是任何键)时返回。无论如何,这是一个例子,以防万一:
WScript.Echo("Press the ENTER key to continue...");
while (! WScript.StdIn.AtEndOfLine) {
WScript.StdIn.Read(1);
}
感谢 ppl 的帮助,这是我的第一篇文章,stackoverflow 很棒!另外,我想出了另一种方法来做这件事,使用oShell.SendKeys()
方法。
就是这样:
var oShell = WScript.CreateObject("WScript.Shell");
oShell.SendKeys("cls{enter}timeout /t 10{enter}");
这样,您几乎可以运行所有 dos 命令,而无需生成新进程或窗口
编辑:虽然它似乎解决了问题,但这段代码不是很可靠。请参阅下面的评论
是的,与WScript.Shell
对象。