ActiveXObject运行不返回(shell)

时间:2015-05-28 17:14:32

标签: javascript shell exec activex

我正在使用ActiveXObject从JavaScript环境运行shell脚本。如果我在run函数中不包含任何参数,那么一切正常:

var x = new ActiveXObject("WScript.Shell");
x.Run("%comspec% /K dir")
alert("I am here!")

根据文档," Run方法还接受布尔值作为第三个参数,该参数确定脚本是否暂停直到被调用程序完成运行,或者继续脚本中的下一个命令。如果此值设置为False(默认值),则Run方法只发出运行程序的命令,但不检查以确保程序实际运行。如果第三个参数设置为True,脚本将等待程序完成运行,返回程序提供的整数退出代码,然后继续脚本的下一行。"

我试图同时使用

x.Run("%comspec% /K dir"), 1, True
alert("I am here!")

x.Run("%comspec% /K dir"), 1, False
alert("I am here!")

但我的代码总是挂起。警报永远不会显示。我究竟做错了什么? (我需要在我的代码中使用第三个参数= true) 谢谢!

1 个答案:

答案 0 :(得分:1)

您必须在括号中包含参数:

[items] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [id] => 146300
                    [name]=>aa
                )
            [2] => stdClass Object
                (
                    [id] => 146301
                    [name]=>bb
                )
)
----------------->changing to
[items] => stdClass Object
        (
            [ 146300] => stdClass Object
                (
                    [name] =>aa
                )
            [146301] => stdClass Object
                (
                    [name] => bb
                )
)

目前,您的脚本使用了几个逗号运算符。首先,它执行x.Run("%comspec% /K dir", 1, true); 方法,评估Run,最后打破未定义的变量名称(1)。 JS区分大小写。