使用 ActiveX 获取 Windows CMD 输出

Get Windows CMD output using ActiveX

我想使用 ActiveX 控件在 windows 中获取 CMD 提示符的输出。

当我使用以下代码时:

var w = new ActiveXObject("WScript.Shell");  
var ex =w.Exec('cmd /c dir /b');
var ret = ex.StdOut.ReadAll();
alert(ret);

命令 cmd /c dir /b 工作正常,我在警告消息中得到了文件列表。

但是当我使用像 cmd /c java -version 这样的命令时,我收到一条空消息。我尝试了上述命令的多种变体,但 none 似乎有效。

有人知道吗?

java -version returns 它在 StdErr 流中的输出,所以要么:

var ret = ex.StdErr.ReadAll();

或者做:

var ex = w.Exec('cmd /C java -version 2>&1');

2>&1 部分将 StdErr 流 (2) 重定向到 StdOut (1).有关详细信息,请参阅 this