如何从wscript.execute()获得结果我需要管道

时间:2010-04-25 04:32:37

标签: pipe wsh

我希望通过wscript的帮助来获取执行命令的结果:

wscript.execute("dir c:\")

我需要知道如何访问此结果或换句话说我想知道如何将结果传递到我的脚本中?

问候。

1 个答案:

答案 0 :(得分:0)

首先,您需要创建一个shell对象:

var shell = WScript.CreateObject("WScript.Shell");

然后有两种方法可供选择。简单的方法是使用Shell Run函数并将命令输出发送到您随后读取的文件:

var errorCode = shell.Run("cmd /c dir c:\\ > tmp.txt", 1, true); 
    // (1 -> Display window, true -> wait for command to finish)

或者,也可以使用Shell Exec函数直接捕获命令输出:

var cmdRun = shell.Exec("cmd /c dir c:\\");
while (cmdRun.Status == 0) // wait for the command to finish
{
  WScript.Sleep(100);
}

Exec返回一个表示进程的对象,在这种情况下,我们将标准输出作为TextStream对象访问。

var output = cmdRun.StdOut.ReadAll();

您可能希望使用返回的对象及其标准I / O管道与新进程交互,但这似乎不符合我的经验。例如,在命令执行完毕之前,我找不到一种方法来读取不阻塞脚本的标准输出。