【bat】テキストファイルの特定文字を含む行を抽出する

概要

batファイルにドラッグしたテキストファイルの指定した文字列を含んだ行を抽出します。
(もしくは指定した文字列を含まない行のみ抽出)

例:”検索文字列”という文字列を含む行以外を抽出する。

コード

特定文字を含む行を抽出
@echo off

REM カレントディレクトリをbatファイルのディレクトリに設定
cd /d %~dp0

REM "検索文字列"を含む行を抽出したテキストファイルを出力
FINDSTR "検索文字列" %1>>%~n1_Convert%~x1

exit
BAT (Batchfile)
特定文字を含まない行を抽出
@echo off

REM カレントディレクトリをbatファイルのディレクトリに設定
cd /d %~dp0

REM "検索文字列"を含まない行を抽出したテキストファイルを出力
FINDSTR /V "検索文字列" %1>>%~n1_Convert%~x1

exit
BAT (Batchfile)

解説・カスタマイズ例

検索文字列を変更してご使用ください。
/V オプションを付与するかどうかで、含む/含まないの動作を変更できます。

また、/R オプションを使用することで正規表現を使用することも可能です。
正規表現を使用することで英数字のみの行、〇から始まる行、といった検索をすることができます。
以下の例は「任意の文字4文字+”列”」を含む行を抽出する場合の記述です。

正規表現を使用するパターン
FINDSTR /R ...."列" %1>>%~n1_Convert%~x1  
BAT (Batchfile)

補足

・日本語を指定する場合は、batファイル、変換ファイル共に文字コードを”Shift-JIS”に変更してください。
(メモ帳の場合は”ANSI”)

・”-“などコマンドとして扱われてしまう特定文字を指定する場合は “^”(エスケープ文字)を前につけて下さい

BAT (Batchfile)
FINDSTR "^-" %1>>%~n1_Convert%~x1  
BAT (Batchfile)