ファイル (複数可) 内のテキスト文字列を検索します。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "文字列" [[ドライブ:][パス]ファイル名[...]]
/V 指定した文字列を含まない行をすべて表示します。
/C 指定した文字列を含む行の数だけを表示します。
/N 行番号を表示します。
/I 大文字と小文字の区別をしないで検索します。
/OFF[LINE] オフライン属性が設定されたファイルをスキップしません。
"文字列" 検索する文字列を指定します。
[ドライブ:][パス]ファイル名
検索するファイル (複数可) を指定します。
パスが指定されていないときは、プロンプトで入力されたテキストまた
は別のコマンドからパイプ処理で渡されたテキストを検索します。
このコマンドを使用すると、なぜか
---------- [[ドライブ:][パス]ファイル名[...]]ヒットした行1ヒットした行2
と出てくる。ハッキリ云って先頭の
---------- [[ドライブ:][パス]ファイル名[...]]
は要らない・・・。
コレを出さないようにするには、
find "文字列" %FILE_NAME% | find "文字列"
とすれば必要な部分だけに整形された。
ただ、ヒットさせた行を for の tokens で分割させようとしたときに問題が・・・。
for /f "tokens=1-3" %%a in ('find "文字列" %FILE_NAME% | find "文字列" %FILE_NAME%') do echo %%a %%b %%c
みたいな事はできない。
for /f "tokens=1-3" %%a in ('find "文字列" %FILE_NAME%') do echo %%a %%b %%c
を注意深く観察すると、
- ---------- [[ドライブ:][パス]ファイル名[...]]
- ヒットした行1
- ヒットした行2
のような感じで、行数分ループしていた。
で、1行目だけ要らないので、コメント行扱いにする eol を使用する。
for /f "eol=- tokens=1-3" %%a in ('find "文字列" %FILE_NAME%') do echo %%a %%b %%c
これで無事 find でヒットした行をtokenizeさせることができた。
0 件のコメント:
コメントを投稿