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

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

但是,上述方法我必须等到“myprogram.cmd”完成然后才能获得整个输出。
我想在“myprogram.cmd”运行时实时获取输出。

是否可以仅使用 Windows 脚本?

最佳答案

Windows 程序肯定可以使用管道异步处理另一个进程的输出。像 VBScript、JScript 和 PowerShell 这样的脚本语言应该能够轻松地做到这一点。您只需将输出通过管道传输到脚本中,脚本在循环内从 stdin 读取,在到达文件末尾时终止。

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

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

关于windows - windows脚本可以得到实时输出吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23571571/

10-11 22:13
查看更多