スクリプトのメンテナンスを行っていると、次の行が見つかりました。
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)に書き込まれたすべてがリダイレクトされます。前のケースと同様に、これは出力(この場合はエラー)を非表示にするために行われますが、nul
デバイスへの書き込みを直接要求する代わりに(2>nul
)、この構文は、標準出力ストリームで使用されるハンドルのコピーに標準エラーストリームのデータを送信することを要求します。