如何使用 2 个应用程序的输出作为另一个(Windows/DOS 个批处理文件)的输入?

How to use the output of 2 applications as the input of another (Windows/DOS batch files)?

在 Windows/DOS 批处理文件中,当您想将一个应用程序的输出用作另一个应用程序的输入时,您可以使用管道符号:

app1.exe | app2.exe

我正在尝试做一些更复杂的事情。我想使用 2 个程序的输出作为另一个程序的输入。具体来说:

fc.exe [output of app1.exe] [output of app2.exe]

显然,我可以执行以下操作

app1.exe > tmp1.txt
app2.exe > tmp2.txt
fc.exe tmp1.txt tmp2.txt

但是有没有更好的方法来做到这一点,最好不要创建临时文件?

请注意,我在我正在做的事情中专门使用 Windows/DOS 外部应用程序 fc.exe (FileCompare),所以如果该工具有任何特殊技巧,请提供具体的答案欢迎加入。

相关的是 Linux 这个有点类似的问题:Redirect two or more STDOUT to a single STDIN

您有 10 个文件流可以重定向。但是,您只能通过管道将程序传输到程序(这会创建一个临时文件来执行此操作)。

fc command 需要指定包含要比较的输入数据的文件的命令行参数。

但是fc不读取控制台输入(STDIN,hande 0;参见Redirection),这是完全不同的东西比那个命令行参数,所以你不能使用输入重定向(<)或管道(|,右侧有 fc)来提供输入数据。

因此您将不得不使用临时文件,就像您已经使用的那样。