2019年7月26日金曜日

Windowsコマンド:「|(パイプ)」で標準出力を渡す

「|(パイプ)」:

 使用例:


 systeminfoの実行結果をFindコマンドに渡し、「KB44」という文字列が含まれている行を列挙。

 systeminfo | find "KB44"



 前回は「systeminfo」コマンドでWindowsシステムの概略情報を抽出しましたが、そういった標準出力を別なコマンドに“渡す”方法として「|(パイプ)」を使ってそのまま受け渡すことが出来ます。
 ※小文字のエルでも数字の1でもありません。
  キーボード右上「¥」の所にある
  「|(パイプ)
  です。
  「shiftキー」を押しながらです。

 上記の例では、「KB44~~~」というWindowsUpdateセキュリティパッチはインストールされているか?を即確認できます。
 もちろん、末尾まで入れて、「とある特定のKB限定」で探すことも出来ます。

 大抵の標準入力を受け付けてくれるコマンドであれば「|(パイプ)」でつなげて渡す/受け取ることが出来ます。
 また、多段で複数のパイプでつなぐことも出来ます(上記例にさらに追加例)。

 systeminfo | find "KB44" | find "04"
 
 この例では、上記のKB44の付く行の結果から、さらに"04"の文字が付くものに絞って抽出する連続技です。
 意味があるかどうかはさておき、こういった方法で多段連続複数パイプを使うことも出来ます。



 他には、以下の様な例もありますので、載せておきます。

 type (適当なテキストファイル) | more

 type (適当なテキストファイル) | sort

 dir | clip

 systeminfo | find "KB4" | sort | clip
 ↑最後の例では、以下のような動きになります。
 1.systeminfoコマンドの標準出力を、次のfindへ渡す
 2.findでは"KB4"という文字列が含まれる行を探し、次のsortへ渡す
 3.sortでは並び順を反転(/R)してソートし、次のclipへ渡す
 4.clipでは3の結果をクリップボードに格納(バッファ)する
 試しにメモ帳などに張り付け(ペースト)すると文字列が格納されていますね。

 また、リダイレクト「>」と組み合わせてファイル出力する方法も想定されます。
 追記:リダイレクトについてはこちらの記事で記載しました。

 ※標準出力や、クリップボードにはバッファサイズの上限があります。
 その文字数を超えると欠落したり、コマンドが落ちたりする場合がありますので長さの取り扱いには要注意で、あるはずの文字や情報がすっぱりなくなっているのに気づかない場合はあります。


- PDS PIS 研究室 室長 -




0 件のコメント:

コメントを投稿