2
做的一个关于剧本的一些保养,我发现这行:Windows命令中的“2>&1”是做什么的?
ping -n 40 127.0.0.1 > NUL 2>&1
我知道from this question一切到NUL导致脚本睡了39秒。但我不知道该命令的其余部分如何。
2>&1
是做什么用的?
做的一个关于剧本的一些保养,我发现这行:Windows命令中的“2>&1”是做什么的?
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
),该语法请求将标准错误流中的数据发送到标准输出流中使用的句柄的副本。
https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true“重定向所有输出,包括句柄2(即,STANDR),从ipconfig命令处理1(即STDOUT),然后将输出重定向到Output.log,输入...“ – ceejayoz
'2>'重定向STDERR输出,'&1'指定批处理文件参数用于文件名。 – rcgldr
相关:[cmd.exe重定向操作符的顺序和位置](http://stackoverflow.com/q/25559389) – aschipfl