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

Windows 如何从两个批处理的命令中使用相同的输出文件,windows,batch-file,pipe,Windows,Batch File,Pipe,假设我有下面的批次comannd,它按预期工作 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

假设我有下面的批次comannd,它按预期工作

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

这将通过管道将所有数据传输到findstr:

echo test 2>&1 | findstr "^" >file.log 2>&1
试试这个:

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

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

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

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

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


是的,但这对我不起作用
echo
findstr
只是重现错误的示例。第一个命令输出将通过管道传输到sevenzip
7z.exe u-sifile.txt backup.7z
这将在存档
backup.7z
中存储压缩文件
file.txt
。我想要的是第一个命令的错误输出加上一个日志文件中sevenzip的输出。使用您的代码,错误消息将包含在我的zip文件中。这有助于询问具有真实细节的问题。详细解释第一个命令的作用只会分散对真实任务的注意力<代码>文件1.exe中的Stderr应写入日志文件-文件2.exe中的Stdout和Stderr应写入日志文件。。。这会失败,因为file.log被另一个进程使用您只是假设第二个命令会输出到控制台,即使在这种情况下,findstr也会过滤错误。