Windows cmd stderr 重定向到 stdout 同时将输出保留到 stderr?

Windows cmd stderr 重定向到 stdout 同时将输出保留到 stderr?

在 Windows 7 cmd shell 中是否有一种方法可以将 stderr 重定向到 stdout 同时保持 stderr 流完整?

例如,我有一个程序将以下消息输出到 stderr 和 stdout

TO STDOUT  
TO STDERR

我想要两个文件 stderr.txt 和 stdout.txt,内容如下

标准错误输出
到标准错误

标准输出文件
到 STDOUT
到 STDERR

这可能吗?

答案1

我想这就是你想要的:

dir a.txt > output.msg 2> output.err >&1

或者

dir 1>a.txt 2>&1 | type a.txt

2>重定向标准错误 &1发送标准错误回到标准错误

我必须测试一下才能给你更好的答案

答案2

这是不完善的,但它能起作用。clip.exe 随 Windows 的现代版本提供,您可以从多个来源下载它的对应程序 - paste.exe。

此行假定文件 yyz.pdq 不存在,因此将向 stderr 生成“文件未找到”消息:

(dir yyz.pdq 3>&1 1>&2 2>&3) | clip & paste >con & paste >err.txt

此形式的命令将按照最初的请求重定向到 stderr 和 stdout+stderr 的单独文件:

((dir yyz.pdq 3>&1 1>&2 2>&3) | clip & paste & paste >err.txt) 1>out.txt 2>&1

相关内容