バッチファイルで文字列をフィルタリングするコマンド

バッチファイル

本記事では、バッチファイル内でfindstrコマンドを使用して文字列をフィルタリングする方法について紹介します。

  • テキストファイルから文字列を抽出
  • コマンドの出力から文字列を抽出

使用コマンド:findstr

findstrは、ファイル内やコマンドの出力結果から特定の文字列を検索し、マッチした行だけを表示するためのコマンドです。この機能を利用することで、ログファイルの解析、設定ファイルからの特定情報の抽出など、多岐にわたるタスクを効率的に実行できます。

補足:Unix/Linuxの場合、コマンドの出力結果をgrepでフィルタリングしますが、findstrを使用するとWindows環境においても似た効果を得ることができます。

準備

バッチファイルと同じディレクトリに以下のファイルを作成します。

application.log

2024-03-05 10:00:00 Application started successfully.
2024-03-05 10:05:23 User login attempt successful for user: user123.
2024-03-05 10:07:45 Error: Database connection failed.
2024-03-05 10:08:12 Retrieving data from API.
2024-03-05 10:09:33 Warning: API response delayed.
2024-03-05 10:10:47 Error: Failed to parse API response.
2024-03-05 10:15:00 Scheduled maintenance started.
2024-03-05 10:20:00 Scheduled maintenance completed.
2024-03-05 10:25:23 Error 404: Resource not found.
2024-03-05 10:30:45 Error: Invalid user input detected.
2024-03-05 10:35:00 Backup operation successful.
2024-03-05 10:40:00 Error: Backup operation incomplete.
2024-03-05 10:45:23 Notification: New user registered with ID user124.
2024-03-05 10:50:00 Error: Email service temporarily unavailable.

サンプル1:特定のエラーメッセージを含むログ行の抽出

以下は、”error”という文字列を含むログファイルの行を抽出する例です。

@echo off

set LOGFILE=application.log

echo "error"が含まれる行を表示(/I で大文字小文字を区別しない)★
findstr /I "error" %LOGFILE%

pause

実行結果

"error"が含まれる行を表示(/I で大文字小文字を区別しない)★
2024-03-05 10:07:45 Error: Database connection failed.
2024-03-05 10:10:47 Error: Failed to parse API response.
2024-03-05 10:25:23 Error 404: Resource not found.
2024-03-05 10:30:45 Error: Invalid user input detected.
2024-03-05 10:40:00 Error: Backup operation incomplete.
2024-03-05 10:50:00 Error: Email service temporarily unavailable.
続行するには何かキーを押してください . . .

サンプル2:コマンドの出力から特定の行を抽出

以下は、テキストファイルの内容を表示するtypeコマンドの出力から”maintenance”という文字列を含む行を抽出する例です。

@echo off

set LOGFILE=application.log

echo コマンド出力から"maintenance"が含まれる行を表示(/I で大文字小文字を区別しない)★
type %LOGFILE% | findstr /I "maintenance"

pause

実行結果

コマンド出力から"maintenance"が含まれる行を表示(/I で大文字小文字を区別しない)★
2024-03-05 10:15:00 Scheduled maintenance started.
2024-03-05 10:20:00 Scheduled maintenance completed.
続行するには何かキーを押してください . . .

まとめ

この記事では、バッチファイル内で特定の文字列やパターンにマッチする行を効率的に検索できるfindstrコマンドについて紹介しました。ログファイルの監視、設定ファイルからの情報抽出、データのフィルタリングなどにご活用ください。

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