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

use*_*861 6 windows sleep cmd ping io-redirection

对脚本进行一些维护,我找到了这一行:

ping -n 40 127.0.0.1 > NUL 2>&1
Run Code Online (Sandbox Code Playgroud)

从这个问题中知道, NUL的所有内容都会导致脚本睡眠39秒.但我不知道命令的其余部分是做什么的.

怎么2>&1办?

MC *_* ND 8

分解线

ping -n 40 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

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

>nul   or   1>nul
Run Code Online (Sandbox Code Playgroud)

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

2>&1
Run Code Online (Sandbox Code Playgroud)

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