パイプとフィルタ
にメンテナンス済み
コマンドプロンプトでは、あるコマンドの出力結果を別のコマンドの入力として渡すことができます。この仕組みをパイプと呼びます。
パイプを活用すると、大量の出力結果からフィルタリング・並べ替え・ページング表示などの加工を簡単に行えるようになります。
パイプの基本
パイプは |(縦棒)で表します。
構文
コマンド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 | 降順(逆順)で並べ替え |
/+n | n 列目を基準に並べ替え |
環境変数 PATH を見やすく表示
PATHの項目を1行ずつ表示してソート
echo %PATH:;=^&echo.% | sort
more でページング表示
出力が画面に収まらないほど多い場合、more でページ単位で表示できます。
ファイル一覧を1画面ずつ表示
dir /s | more
テキストファイルをページング表示
type longfile.txt | more
スペースキーで次のページに進み、Q で表示を終了します。
パイプを連結する
パイプは複数回連結して使用できます。
複数のフィルタを連結
tasklist | findstr /I "chrome" | sort | more
上記は以下の処理を順番に行います。
tasklistでプロセス一覧を取得findstrで「chrome」を含む行を抽出sortで結果を並べ替え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 |
関連記事
練習問題
#コマンドプロンプト
#バッチファイル
#パイプ
#フィルタ
#コマンド