バッチファイルを利用して何かのファイルを生成したり、逆に既存のファイルをバッチファイルの中から呼び出して使用する場合、テキストファイルの中から文字列の検索ができると大変便利です。
これを行うためのMS-DOSのコマンドが「FIND」コマンドです。
このコマンドはテキストファイル(複数可)の中から指定の文字列を検索します。
書式は以下の通りです
FIND オプション "検索文字列" 検索ファイル名1 検索ファイル名2 ....
以下のオプションを付加することで、このコマンドの動作を変更することが出来ます。
- /V ・・・ 検索文字列を含まない行をすべて表示します。
- /C ・・・ 検索文字列を含む行の数だけを表示します。
- /N ・・・ 何行目で見つかったのか行番号を表示します。
- /I 大文字と小文字の区別をしないで検索します.
たとえば、「TEST.TXT」というファイルの中から「試験」という文字列を検索するには以下のように書きます。
FIND "試験" TEST.TXT
次に、「A.TXT」、「B.TXT」の二つのファイルの中から、「こんにちは」という文字列を検索するには以下のようにします。
FIND "こんにちは" A.TXT B.TXT
さて、二つのファイルならこれでも良いのですが、たとえば拡張子が「TXT」のファイルをすべて検索したいときはどうするでしょうか?
FIND "こんにちは" *.TXT
このようにすればいいでしょうか?結論から言えばこれではだめです。
このコマンド、困ったことに、ワイルドカードに対応していません。そこで今回は、拡張し「TXT」のファイルから文字列を検索するバッチファイルを作成してみましょう。
REM File Name FIND1.BAT
@ECHO OFF
IF "%1"=="" GOTO HELP
FOR %%A IN (*.TXT) DO FIND "%1" %%A
GOTO END
:HELP
ECHO 使い方。
ECHO FIND の後に検索文字列を入力してください。
:END
練習問題
次の内容のバッチファイルを作成してみましょう。
ファイル名はFIND2.BATとします。
処理内容:
パラメータはありません。
キーボードから検索文字列とファイル名を入力して検索を行います。
実行結果が以下のようになるように作成してください。
検索文字列を入力してください。
入力が終わったらCtrlキーを押しながらZキーを押してエンターキーを押してください。
検索ファイル名を入力してください。
入力が終わったらCtrlキーを押しながらZキーを押してエンターキーを押してください。
○○というファイルから文字列○○を検索します。
検索結果は以下の通りです。
(検索結果表示。
もう一度検索を行いますか?
1=行う、2=行わない
(行うを選択すると、検索文字列入力に戻る) 検索を終了しました。
ヒント
前のこうの「キーボードからの入力を処理する」と、「CHOICEコマンド」の項を参照してみてください。
どうしても分からない場合は、ここをクリックしてください。