Windowsバッチファイル

バッチファイルのファイル検索・テキスト処理【where・find・findstr完全ガイド】

Windowsバッチファイル
記事内に広告が含まれています。

バッチファイルでファイルを検索したりテキストを処理するには wherefindfindstr が活躍します。それぞれの違いと使いどころを解説します。

whereコマンド:コマンドやファイルの場所を探す

where はコマンドの実行ファイルがどこにあるかを表示します。LinuxのWhich コマンドに相当します。

@echo off

rem コマンドの場所を確認
where python
where git
where notepad

rem 存在確認(エラーを捨てて終了コードだけ使う)
where python >nul 2>&1
if %errorlevel% equ 0 (
    echo Pythonがインストールされています
) else (
    echo Pythonが見つかりません
)

rem フォルダ内のファイル検索(ワイルドカード対応)
where /r C:\work *.txt
where /r C:\logs *.log

findコマンド:テキストの行を検索する

find はファイルや入力から指定した文字列を含む行を検索します。大文字小文字を区別する点に注意です。

@echo off

rem ファイルから文字列を検索
find "ERROR" C:\logs\app.log

rem 行番号も表示
find /n "ERROR" C:\logs\app.log

rem 含まない行を表示(/V で反転)
find /v "DEBUG" C:\logs\app.log

rem コマンドの出力をパイプで渡す
type C:\logs\app.log | find "ERROR"

rem エラー行の数だけカウント
find /c "ERROR" C:\logs\app.log

findstrコマンド:正規表現で高度な検索

findstrfindの強化版で、正規表現・複数ファイル・再帰検索に対応しています。

@echo off

rem 基本的な文字列検索(大文字小文字を区別しない /i)
findstr /i "error" C:\logs\app.log

rem 複数のキーワードをOR検索
findstr /i "error warning" C:\logs\app.log

rem 正規表現を使った検索(/r)
findstr /r "^[0-9]" C:\logs\app.log

rem サブフォルダも含めて再帰検索(/s)
findstr /s /i "TODO" C:\work\*.bat

rem 行番号も表示(/n)
findstr /n "ERROR" C:\logs\app.log

rem 検索結果をfor /fで処理
for /f "delims=" %%a in ('findstr /i "error" C:\logs\app.log') do (
    echo エラー検出: %%a
)

find vs findstr 使い分け

機能findfindstr
単純な文字列検索○(シンプルで速い)
大文字小文字無視×○(/i)
正規表現×○(/r)
複数パターンOR検索×○(スペース区切り)
再帰検索×○(/s)

まとめ

  • whereでコマンドの場所を確認したりインストール確認ができる
  • findは単純なテキスト検索に使う(大文字小文字を区別する)
  • findstrは正規表現・大文字小文字無視・再帰検索など高度な検索ができる

コメント

タイトルとURLをコピーしました