有没有办法在Windows Scripting Host(WSH)cscript.exe中从JScript(而不是javascript)运行命令行命令?

det*_*etj 6 javascript command-line command wsh

我正在编写一个在cscript.exe中运行的JScript程序.是否可以从脚本中运行commnad line命令.这真的会让工作变得简单,因为我可以运行某些命令而不是在jscript中编写更多代码来执行相同的操作.


例如:为了等待按键10秒,我可以立即使用超时命令

timeout /t 10
Run Code Online (Sandbox Code Playgroud)

在jscript中实现这意味着更多的工作.顺便说一句,我在Vista和WSH v5.7上

有任何想法吗?感谢名单!

Hel*_*len 8

您可以使用以下WshShell.Run方法执行DOS命令:

var oShell = WScript.CreateObject("WScript.Shell");
oShell.Run("timeout /t 10", 1 /* SW_SHOWNORMAL */, true /* bWaitOnReturn */);
Run Code Online (Sandbox Code Playgroud)


如果您特别需要暂停脚本执行,直到按下某个键或超时,则可以使用该WshShell.Popup方法(带有超时选项的对话框)完成此操作:

var oShell = WScript.CreateObject("WScript.Shell");
oShell.Popup("Click OK to continue.", 10);
Run Code Online (Sandbox Code Playgroud)

但是,此方法在cscript下运行时也会显示一个消息框.

本文介绍了另一种可能的方法:当用户按下键盘上的键时,如何暂停脚本然后恢复它?简而言之,您可以使用该WScript.StdIn属性直接从输入流中读取,这种方式等待输入.但是,从输入流中读取不支持超时,仅在ENTER按键时返回(不是任何键).无论如何,这是一个例子,以防万一:

WScript.Echo("Press the ENTER key to continue...");

while (! WScript.StdIn.AtEndOfLine) {
   WScript.StdIn.Read(1);
}
Run Code Online (Sandbox Code Playgroud)


Mau*_*fer 0

是的,有WScript.Shell对象。

查看文档和示例