windows命令提示符(cmd.exe)中失败命令的管道输出

windows命令提示符(cmd.exe)中失败命令的管道输出,windows,cmd,Windows,Cmd,我试图将stderr重定向到stdout,然后使用tee在sceen上显示它并转储到文件 当运行带有输入错误的命令时(cmd对输入错误作出反应时,'CommandNameWithATypo'不被识别为内部或外部命令、可操作程序或批处理文件。),我希望此错误消息显示在屏幕上,并写入tee命令中指定的文件。但是,运行此: CommandNameWithATypo 2>&1 | tee test.txt 我并没有在屏幕上得到任何输出,也并没有文件(并没有创建任何文件),就好像管道从未发

我试图将stderr重定向到stdout,然后使用
tee
在sceen上显示它并转储到文件

当运行带有输入错误的命令时(cmd对输入错误作出反应时,
'CommandNameWithATypo'不被识别为内部或外部命令、可操作程序或批处理文件。
),我希望此错误消息显示在屏幕上,并写入
tee
命令中指定的文件。但是,运行此:

CommandNameWithATypo 2>&1 | tee test.txt
我并没有在屏幕上得到任何输出,也并没有文件(并没有创建任何文件),就好像管道从未发生过一样。是否打算这样做?可能有解决方法吗?

问题是,“cmd最知道将重定向放在哪里”/为了证明,请使用
>nul echo hello
编写一个批处理文件(不要关闭
echo
),运行它并观察输出。您可以使用代码块强制它将重定向绑定到代码的预期部分:

( CommandNameWithATypo 2>&1 ) | tee test.txt 

(很抱歉“您确实安装了tee,是吗?”,但是如果没有
tee
,您会得到您所描述的:没有。请尝试
errocommand 2>&1|notTee file.txt

您确实安装了
tee
,不是吗?@Stephan是的,它确实适用于
echo blablablablablablabla | tee file.txt
Try
(使用ATYPO 2>&1的命令名)| tee test.txt
2>&1
绑定到pipe@Stephan是的,这很有效!非常感谢。你知道当不使用括号时,解释器内部到底发生了什么吗?附言。如果你将此作为答案发布,我会将其标记为最佳答案。附言:如果你真的想爬过它,请开始。注意:这是“头痛之地”