バッチファイルでのファイル検索・テキスト処理を解説します。where・find・findstrコマンドとforループを組み合わせた実践的な活用法を紹介します。
whereコマンド(ファイル・コマンドの場所を探す)
@echo off
:: コマンドの場所を探す
where python
where /r C:\ *.pdf
:: 存在チェックに使う
where git >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
echo git がインストールされていません
) else (
echo git が見つかりました
where git
)findコマンド(文字列検索)
@echo off
:: ファイル内の文字列を検索
find "エラー" C:\logs\app.log
:: 大文字小文字を区別しない
find /i "error" C:\logs\app.log
:: 行番号も表示
find /n "ERROR" C:\logs\app.log
:: マッチしない行を表示
find /v "INFO" C:\logs\app.logfindstrコマンド(正規表現対応の高機能検索)
| オプション | 意味 |
|---|---|
| /i | 大文字小文字を区別しない |
| /r | 正規表現を使う |
| /s | サブフォルダも検索 |
| /v | マッチしない行を表示 |
| /n | 行番号を表示 |
| /c:”文字列” | 文字列をそのままパターンとして使う |
@echo off
:: ERRORまたはWARNINGを含む行を検索
findstr /i "ERROR WARNING" C:\logs\app.log
:: 正規表現でIPアドレスを検索
findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" access.log
:: サブフォルダ含め全ログからエラーを抽出
findstr /s /i "error" C:\logs\*.log実践:エラーログの自動抽出
@echo off
set LOGDIR=C:\logs
set OUTPUT=C:\report\errors_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.txt
echo エラーレポート > "%OUTPUT%"
echo 検索日時: %DATE% %TIME% >> "%OUTPUT%"
echo ======================== >> "%OUTPUT%"
findstr /s /i "error" "%LOGDIR%\*.log" >> "%OUTPUT%"
echo.
echo レポート出力完了: %OUTPUT%
pauseまとめ
- whereでコマンドやファイルの場所を検索できる
- findで文字列を含む行を簡単に抽出できる
- findstrはオプションが豊富で正規表現にも対応している
- findstr /sでサブフォルダを含む再帰検索ができる
- 次の記事ではレジストリ操作を学ぶ


コメント