パイプとフィルタ

にメンテナンス済み

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

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

パイプの基本

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

構文
コマンド1 | コマンド2

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

基本的な使用例

プロセス一覧からnotepadを検索
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>

行数をカウントする

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

txtファイルの数をカウント
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」を含まない行だけを表示できます。

sort で並べ替え

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

ファイル名で並べ替え
dir /b | sort
逆順で並べ替え
dir /b | sort /R
オプション説明
/R降順(逆順)で並べ替え
/+nn 列目を基準に並べ替え

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

PATHの項目を1行ずつ表示してソート
echo %PATH:;=^&echo.% | sort

more でページング表示

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

ファイル一覧を1画面ずつ表示
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 "個のファイル"

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

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

フィルタ結果をファイルに出力
tasklist | findstr "chrome" > chrome_processes.txt
パイプとリダイレクトの違い

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

まとめ

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

関連記事

練習問題

練習問題

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

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