我知道我可以使用FOR /F
来获取命令进程输出,如下所示:
FOR /F %%I IN ('myprogram.cmd') DO (
do something with %%I
)
然而,上面的方法我必须等到" myprogram.cmd"完成后获得整个输出。 我想在" myprogram.cmd"时实时获得输出。在跑。
是否可以仅使用Windows脚本?
答案 0 :(得分:4)
Windows程序当然可以使用管道异步处理另一个进程的输出。像VBScript,JScript和PowerShell这样的脚本语言应该能够轻松完成。您只需将输出传输到脚本中,脚本就会从循环中的stdin读取,并在到达文件末尾时终止。
但是使用纯批次这样做是非常困难的并且具有显着的局限性。它需要多个批处理和一个临时文件。第一个批处理过程使用FIND从stdin读取并将输出重定向到临时文件。第二个批处理过程使用SET / P从临时文件中读取。有关如何完成此操作的示例,请参阅我的batchTee.bat。
但除了作为学术练习外,我不建议这样做。相反,您应该使用其他一种可以轻松完成此任务的脚本语言。