问题描述
在 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 个可以重定向的文件流。但是,您只能通过管道程序来编程(这会创建一个临时文件来执行此操作)。