我在调整一个脚本时,发现了这一行:
ping -n 40 127.0.0.1 > NUL 2>&1
我从这个问题中得知,除了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)的内容重定向。与前面的情况类似,这是为了隐藏输出(在本例中是错误),但是不像直接请求写入null设备(我们可以使用2>nul
),这种语法请求将标准错误流中的数据发送到与标准输出流中使用的句柄副本。
dir foo 2>&1 >out
File Not Found
dir foo 2>err >out
2>
重定向 STDERR 输出,&1
指定用于文件名的批处理文件参数。 - rcgldr