将执行进程的输出重定向到当前cmd

时间:2011-12-21 11:22:30

标签: windows command-line cmd shellexecute

我是否可以从JScript脚本执行程序,以便将执行程序的输出写入当前控制台?

目前我正在使用Shell.Application.ShellExecute,它正在为已执行的应用程序打开另一个新控制台。

在我的例子中,JScript是一个使用ShellExecute执行的编译器的包装器。所以会发生的是所有编译器错误都会丢失,因为它们会在另一个控制台中打印出来。

1 个答案:

答案 0 :(得分:2)

如果您只是担心捕获编译器输出,那么您可以将输出重定向到文件(我建议使用stdout和stderr)。像这样:

var shell = new ActiveXObject("WScript.Shell");
shell.Exec('YourCommand 1>yourOutput.txt 2>&1 ')

如果您真的想在当前的控制台窗口中看到ouptut(我不怪你),那么你可以使用它:

var shell = new ActiveXObject("WScript.Shell");
WScript.StdOut.Write( shell.Exec('YourCommand 2>&1').StdOut.ReadAll() );

注意 - 如果您的命令有可能要求输入,那么您必须通过命令字符串中的管道或重定向提供输入(或者您可以将输入重定向到nul)。否则程序将挂起。