2011年10月9日日曜日

FINDSTR /L = ファイルの中を文字列検索する。OR検索可能版 - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFINDSTR
○Windows XP
指定した文字列でそのまま検索したい時は、FINDSTR /L コマンドを使う方法が便利です。

o FINDコマンドとは次の点で異なります。
    +複数の文字列を指定して、いずれかの文字列に一致する行を見つける事が出来ます。
    + 一方、現在のコードページ以外の文字コードは、常に不一致になります。
        + FIND コマンドの場合は Unicode(= UTF-16LE)のファイルも検索可能ですが、このコマンドは違います。
o /L を付けない場合、正規表現として検索する場合があります。

**** 書式
--------
findstr /l [オプション] "検索文字列" [ファイル名]
もしくは
findstr /l [オプション] "検索文字列" < ファイル名
もしくは
コマンド | find /l [オプション] "文字列"
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 検索する文字列に半角空白を含めたい時は、「find /c:"文字列"」もしくは「find /l /c:"文字列"」の形で指定します。
    + /C オプションを付けると、自動的に /L /C となります。
    + その他のオプションについては、「FINDSTR(後日公開予定)」の説明をご覧下さい。
o 検索文字列 = 「"」(= 二重引用符)で括ります。
    + 複数の検索文字列を指定して OR検索したい時は、途中に半角空白を入れます。
        + 例:「findstr /l "ミクさん ネギ"」
        + この時、「ミクさん」または「ネギ」が含まれている行を検索します。
    + 但し、/C オプションを指定した時は、空白文字も検索文字列の一部になります。
o ファイル名 = 中を検索したいファイル名です。
    + UNIX形式の区切り文字「/」も指定出来ます。(例「C:/ミクさん/ネギ.txt」)
    + リダイレクトを使わない時は、動きが少し変わります。
        + ファイル名を複数並べる事が出来ます。
        + ファイル名にワイルドカード(「*」や「?」)を使用する事も出来ます。
        + ワイルドカード使用時、表示結果の行の先頭にファイル名+「:」(コロン)を追加します。
--------
findstr "ミクさん ネギ" ミクさん*.txt
ミクさん.txt: ミクさんの好きな食べ物 = ネギ
--------

    + ファイル名を指定せず、入力のリダイレクトも無い時は、キーボードからのデータ入力を待ちます。
        + データの終わりは「Ctrl キーを押しながら Z キー」。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 検索結果 1件以上
    + 「FINDSTR: 開くことができません (ネギ.txt)」 = 見つからないファイルがあります。
    + 「FINDSTR: /z は無視されました。」 = 間違っているオプションは無視して実行します。
    + ファイル名が間違っていても、1ファイル以上検索して見つかった行がある場合には、戻り値は 0 になります。
o 1 = 検索結果 0件
    + 「FINDSTR: 開くことができません (ネギ.txt)」 = 見つからないファイルがあります。
    + 「FINDSTR: /z は無視されました。」 = 間違っているオプションは無視して実行します。
    + ファイル名が間違っていても、指定した全てのファイルで見つかった行が無い場合に限り、戻り値は 1 になります。
o 2 = 書式エラー
    + 「FINDSTR: コマンド ラインが正しくありません」 = 検索する文字列を指定して下さい。
    + 「FIND: パラメータの書式が違います」 = 検索する文字列を指定して下さい。


**** 使用例
--------
findstr /l "ミクさん ネギ" ミクさん.txt

dir | findstr /l "ミクさん.txt"
findstr /l "ミクさん.net" < ミクさん.txt
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 最初の使用例は、/L オプションを付けなくても正しく検索します。
        + 検索文字列に、正規表現の記号を使っていないからです。


**** 機能
o ファイルの中を文字列検索して、条件と一致する行、もしくは見つかったファイルの名前を表示します。
o ファイル名は、複数並べる事が出来ます。ワイルドカードを使用する事も出来ます。
    + この時、表示結果にファイル名が含まれます。


**** メモ
o Windows XPでは、文字コードが ANSI (= Windows版Shift-JIS)のファイルだけ比較する事が出来ました。
    + FIND コマンドとは異なり、Unicode(= UTF-16LE)のファイルは常に不一致になりますので、注意します。
o 検索文字列の指定方法について。検索文字列が1つの場合、「"」で括らなくても正しく動くみたいです。
    + 但し、ヘルプに書かれている書き方は、「"」付きです。
    + また、半角空白を入れてOR検索したい時は、必ず「"」で括ります。


**** 確認したバージョン
o Windows XP Service Pack 3 + Windows Update 2011年9月版


==
関連ページ:
    ▼FINDSTR = ファイルの中を正規表現、もしくは文字列で検索する。OR検索可能版
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    > FINDSTRコマンドで正規表現を使う時の注意点

FINDSTR = ファイルの中を正規表現、もしくは文字列で検索する。OR検索可能版 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
o 主な使い方
FINDSTR (/R) = ファイルの中を、正規表現で検索する。OR検索可能版
FINDSTR /L = ファイルの中を、普通の文字列で検索する。OR検索可能版
FINDSTR /C = ファイル内容検索で、半角空白も検索文字列に含める

o 使用上の注意点
FINDSTRコマンドで正規表現を使う時の注意点


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    > FC = ファイルの内容を比較して、それらの違いを表示する
    COMP = ファイルの内容を比較する。最後に質問あり版
    DISKCOMP = フロッピーディスクの内容を比較する。途中に質問あり版