Windows脚本可以获得实时输出吗?

时间:2014-05-09 18:25:03

标签: windows shell batch-file

我知道我可以使用FOR /F来获取命令进程输出,如下所示:

FOR /F %%I IN ('myprogram.cmd') DO (
  do something with %%I
)

然而,上面的方法我必须等到" myprogram.cmd"完成后获得整个输出。 我想在" myprogram.cmd"时实时获得输出。在跑。

是否可以仅使用Windows脚本?

1 个答案:

答案 0 :(得分:4)

Windows程序当然可以使用管道异步处理另一个进程的输出。像VBScript,JScript和PowerShell这样的脚本语言应该能够轻松完成。您只需将输出传输到脚本中,脚本就会从循环中的stdin读取,并在到达文件末尾时终止。

但是使用纯批次这样做是非常困难的并且具有显着的局限性。它需要多个批处理和一个临时文件。第一个批处理过程使用FIND从stdin读取并将输出重定向到临时文件。第二个批处理过程使用SET / P从临时文件中读取。有关如何完成此操作的示例,请参阅我的batchTee.bat

但除了作为学术练习外,我不建议这样做。相反,您应该使用其他一种可以轻松完成此任务的脚本语言。