Windows 命令中的“2>&1”有什么作用?

What does "2>&1" in a Windows Command Do?

在对脚本进行一些维护时,我发现了这一行:

ping -n 40 127.0.0.1 > NUL 2>&1

我知道 from this question NUL 之前的所有内容都会导致脚本休眠 39 秒。但是我不知道命令的其余部分是做什么的。

2>&1 有什么作用?

分解线

ping -n 40 127.0.0.1

向本地主机发送 40 个 ping 数据包。如果没有任何问题,默认行为是在数据包之间等待 1 秒,因此它会产生 39 秒的延迟

>nul   or   1>nul

将写入标准输出流(流编号 1)的所有内容重定向到 nul 设备。发送到此设备的任何内容都将被丢弃。效果是ping命令的所有正常输出都被隐藏了。

2>&1

这会将任何写入标准错误流(流编号 2)的内容重定向。与前面的情况一样,这样做是为了隐藏输出(在这种情况下是错误),但不是直接请求写入 nul 设备(我们本可以这样做 2>nul),此语法请求到将标准错误流中的数据发送到标准输出流中使用的句柄副本。