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