【问题标题】:ActiveXObject run does not return (shell)ActiveXObject 运行不返回(shell)
【发布时间】:2026-02-21 17:05:01
【问题描述】:

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

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) 谢谢!

【问题讨论】:

    标签: javascript shell exec activex


    【解决方案1】:

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

    x.Run("%comspec% /K dir", 1, true);
    

    目前您的脚本使用了几个逗号运算符。首先它执行Run 方法,评估1,最后中断为未定义的变量名(True)。 JS 区分大小写。

    【讨论】:

    • 问题已解决!我使用的是 True 而不是 true...谢谢!