重定向命令行输出时同时使用 < 和 > 运算符

Using both < and > operators when redirecting command line output

我的批处理应该使用给定的输入数据来区分两个程序之间的输出。你可以想象我正在测试某个任务是否已经正确执行:

compareout.bat implementation.exe correct_implementation.exe test_data.txt

程序应该运行 使用测试数据的命令并比较它们的输出。我可以使用这个保存命令输出:

ping 8.8.8.8 /t >pinglog.txt

我可以使用这个将文件内容发送到标准输入:

implementation.txt < testdata.txt

但是我该如何同时使用这两个运算符呢?

就像使用运算符和参数一样简单。举个简单的例子:

cat <input.txt >output.txt

当然,只有当您有一个读取 STDIN 并写入 STDOUT 的命令时,它才真正适用——这并不真正适用于 ping

但是所做的似乎是运行两个可执行文件并比较它们的输出。这有点复杂 - 将它们都喂给 STDOUT 很容易。将它们喂给两个单独的 STDOUTs 并区分它们更难。我实际上不确定您是否可以在 Windows 平台上使用 Linux,我建议将两个不同命令的 STDOUT 重定向到不同的文件描述符。 (例如,而不是使用 STDIN/STDOUT/STDERR 创建一组额外的文件描述符)

类似于:

diff <(command1) <(command2)