为什么 Windows 命令提示符 COPY 命令将错误消息写入 STDOUT 而不是 STDERR?

为什么 Windows 命令提示符 COPY 命令将错误消息写入 STDOUT 而不是 STDERR?

通常,如果您尝试复制不存在的文件,您会收到一条错误消息:

C:\temp>copy foo bar
The system cannot find the file specified.

我希望该错误消息被写入 STDERR,但它似乎被写入了 STDOUT:

C:\temp>copy foo bar >out

C:\temp>dir

 Directory of C:\temp

23/09/2019  16:18                44 out
               1 File(s)             44 bytes
               0 Dir(s)  885,229,346,816 bytes free

C:\temp>type out
The system cannot find the file specified.

如果你将 STDERR 从 STDOUT 单独重定向,显然也会发生同样的情况

C:\temp>del out

C:\temp>copy foo bar 2>err >out

C:\temp>dir

 Directory of C:\temp

23/09/2019  16:10                 0 err
23/09/2019  16:10                44 out
               2 File(s)             44 bytes
               0 Dir(s)  885,226,635,264 bytes free

C:\temp>type out
The system cannot find the file specified.

我正在使用 Windows 10

C:\temp>ver

Microsoft Windows [Version 10.0.18362.356]

为什么 COPY 不会将错误消息写入 STDERR?此行为的记录在哪里?

相关内容