パイプとフィルタ

にメンテナンス済み

コマンドプロンプトでは、あるコマンドの出力結果を別のコマンドの入力として渡すことができます。この仕組みをパイプと呼びます。

パイプを活用すると、大量の出力結果からフィルタリング・並べ替え・ページング表示などの加工を簡単に行えるようになります。

パイプの基本

パイプは |(縦棒)で表します。

コマンド1 | コマンド2

コマンド1 の標準出力が、コマンド2 の標準入力として渡されます。

基本的な使用例

tasklist | findstr "notepad"
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>tasklist | findstr "notepad"
notepad.exe 12345 Console 1 15,432 K
C:\users\user>

tasklist の出力がそのまま findstr に渡され、「notepad」を含む行だけが表示されます。

よく使うフィルタコマンド

パイプと組み合わせて使用されるコマンドはフィルタコマンドと呼ばれます。

コマンド説明
find指定した文字列を含む行を抽出
findstr正規表現による高度な文字列検索
sortテキストを昇順・降順に並べ替え
more出力を 1 画面ずつ表示

find でフィルタリング

dir | find "txt"
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>dir | find "txt"
2026/03/10 14:30 1,234 report.txt
2026/03/11 09:15 567 memo.txt
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

行数をカウントする

find /C を使うと、一致する行の数をカウントできます。

dir /b *.txt | find /C /V ""
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>dir /b *.txt | find /C /V ""
5
C:\users\user>
チェック

find /C /V "" は「空文字列を含まない行」を数える指定で、結果的にすべての行の数を返すテクニックです。パイプで渡された出力の行数を数えるのに便利です。

findstr でフィルタリング

findstr を使うと、正規表現や複数条件でのフィルタリングが可能です。

netstat -an | findstr "ESTABLISHED LISTENING"
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>netstat -an | findstr "ESTABLISHED LISTENING"
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 192.168.1.100:54321 172.16.0.1:443 ESTABLISHED
C:\users\user>
tasklist | findstr /V "svchost"

/V オプションで「svchost」を含まない行だけを表示できます。なお、findstr "A B" のようにスペースで区切った複数の文字列は「A または B」を意味します。スペースを含む文字列そのものを検索するには findstr /C:"A B" を使用します。

sort で並べ替え

sort コマンドで出力結果を昇順・降順に並べ替えられます。

dir /b | sort
dir /b | sort /R
オプション説明
/R降順(逆順)で並べ替え
/+nn 文字目を基準に並べ替え

環境変数 PATH を見やすく表示

(for %i in ("%PATH:;=" "%") do @echo %~i) | sort
バッチファイル内で使う場合

上記はコマンドプロンプトに直接入力する例です。バッチファイル内では %i を %%i に書き換えてください。

more でページング表示

出力が画面に収まらないほど多い場合、more でページ単位で表示できます。

dir /s | more
type longfile.txt | more

スペースキーで次のページに進み、Q で表示を終了します。

パイプを連結する

パイプは複数回連結して使用できます。

tasklist | findstr /I "chrome" | sort | more

上記は以下の処理を順番に行います。

  1. tasklist でプロセス一覧を取得
  2. findstr で「chrome」を含む行を抽出
  3. sort で結果を並べ替え
  4. more で 1 画面ずつ表示

実践例

実行中のプロセス数をカウント

tasklist | find /C /V ""

特定のポートを使用しているプロセスを特定

netstat -ano | findstr ":8080"
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>netstat -ano | findstr ":8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345
C:\users\user>

最後の列(12345)がプロセス ID です。tasklist /FI "PID eq 12345" で詳細を確認できます。

ディレクトリのサイズを確認

dir /s /-c | findstr "個のファイル"

サブフォルダごとの集計行と、最後の総計行が表示されます。表示文字列は OS の表示言語に依存するため、英語環境では "File(s)" を指定してください。

テキストファイルの内容をフィルタしてファイルに保存

パイプとリダイレクトを組み合わせることもできます。

tasklist | findstr "chrome" > chrome_processes.txt
パイプとリダイレクトの違い

パイプ | はコマンドの出力を「別のコマンドの入力」に渡します。リダイレクト > はコマンドの出力を「ファイル」に保存します。両方を組み合わせることで、フィルタ結果をファイルに出力できます。

パイプを使うときの注意点

  • パイプで渡されるのは標準出力のみです。エラーメッセージも渡したい場合は コマンド 2>&1 | findstr "..." のようにします。
  • パイプの左右のコマンドは、それぞれ別の cmd.exe で実行されます。そのため、パイプ内で set した変数は後続の処理に引き継がれません。
  • FOR /F の in ('...') 内でパイプを使う場合は、^| のようにエスケープが必要です。

まとめ

操作例
文字列で絞り込むコマンド | find "文字列"
正規表現で絞り込むコマンド | findstr "パターン"
並べ替えるコマンド | sort
ページ表示コマンド | more
行数をカウントコマンド | find /C /V ""
複数フィルタを連結コマンド | findstr "A" | sort

関連記事

練習問題

練習問題

コマンド1 | コマンド2 のパイプ処理で正しい説明はどれですか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #パイプ #フィルタ #コマンド