Windows脚本可以实时输出吗?

我知道我可以使用FOR /F来获得命令处理输出,如下所示:

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

但是,上面的方法,我必须等到“myprogram.cmd”完成,然后获取整个输出。 我希望在“myprogram.cmd”正在运行时实时获取输出。

有没有可能只使用Windows脚本?

Windows程序肯定可以使用管道异步处理另一个进程的输出。 像VBScript,JScript和PowerShell这样的脚本语言应该能够轻松地完成这个任务。 您只需将输出输入到脚本中,然后脚本从循环中的stdin中读取,到达文件结尾时结束。

但是使用纯批处理是非常困难的,并且有很大的局限性。 它需要多个批处理过程和一个临时文件。 第一批处理使用FIND从标准输入读取并将输出重定向到临时文件。 第二批处理使用SET / P从临时文件读取。 请参阅我的batchTee.bat ,了解如何完成此操作的示例。

但我不建议这样做,除非作为学术练习。 相反,你应该使用其他脚本语言之一,可以很容易地做到这一点。