如何使用批处理管道的两个命令中的相同输出文件

时间:2014-07-22 14:19:08

标签: windows batch-file pipe

假设我有以下批量指令,它按预期工作。

file1.exe | file2.exe

现在我有以下要求。 - 应将file1.exe中的Stderr写入日志文件 - 应将file2.exe中的Stdout和Stderr写入日志文件

这也有效

file1.exe 2>>file1.log | file2.exe >>file2.log 2>&1

然而,我真正想要的是将两个输出都放在同一个文件中。此操作失败,因为另一个进程使用了​​file.log

file1.exe 2>>file.log | file2.exe >>file.log 2>&1

以下是展示此问题的真实示例。

echo test 2>>file.log | findstr t 1>>file.log 2>&1

3 个答案:

答案 0 :(得分:2)

试试这个:

( echo test | findstr t ) >>file.log 2>&1

答案 1 :(得分:0)

这会将所有数据传递给findstr:

echo test 2>&1 | findstr "^" >file.log 2>&1

答案 2 :(得分:0)

如果您不需要实时正确执行此任务,您还可以创建两个不同的临时文件:

  

file1.exe 2>> temp1.log | file2.exe>> temp2.​​log

然后您可以将第二个文本文件打印到第一个文本:

  

回声。 >> temp1.log&&输入temp2.​​log>> temp1.log
  REM“回声”。在输出文件中留下一个空行