web-dev-qa-db-ja.com

Windowsコマンドの「2>&1」は何をしますか?

スクリプトのメンテナンスを行っていると、次の行が見つかりました。

ping -n 40 127.0.0.1 > NUL 2>&1

私は知っています この質問から NULまでのすべてがスクリプトを39秒間スリープさせることです。しかし、コマンドの残りの部分が何をするのか私にはわかりません。

2>&1は何をしますか?

7
user2023861

ラインを分解する

ping -n 40 127.0.0.1

ローカルホストに40のpingパケットを送信します。問題がない場合、デフォルトの動作ではパケット間で1秒待機するため、39秒の遅延が発生します。

>nul   or   1>nul

標準出力ストリーム(ストリーム番号1)に書き込まれたすべてをnulデバイスにリダイレクトします。このデバイスに送信されたものはすべて破棄されます。その結果、pingコマンドの通常の出力はすべて非表示になります。

2>&1

これにより、標準エラーストリーム(ストリーム番号2)に書き込まれたすべてがリダイレクトされます。前のケースと同様に、これは出力(この場合はエラー)を非表示にするために行われますが、nulデバイスへの書き込みを直接要求する代わりに(2>nul)、この構文は、標準出力ストリームで使用されるハンドルのコピーに標準エラーストリームのデータを送信することを要求します。

5
MC ND