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