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

问题描述

在 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

解决方法

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

但是 fc 不读取控制台输入(STDIN,hande 0;参见 Redirection),这与命令行参数完全不同,因此您不能使用输入重定向 (<) 或管道(|,右侧带有 fc)来提供输入数据。

因此您将不得不使用临时文件,因为您已经这样做了。

,

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...