如何使用 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
)来提供输入数据。
因此您将不得不使用临时文件,就像您已经使用的那样。
在 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
)来提供输入数据。
因此您将不得不使用临时文件,就像您已经使用的那样。