• 締切済み

logファイルの中身を検索し、指定の文字列を取り込む

Dosプロンプトバッチについてお聞きします。 ファイルの中身を確認し、指定の文字列を取り込んでそれを保存するバッチうを作りたいのですが、可能でしょうか。 どなたか分かる方よろしくお願いします。

みんなの回答

  • goosyu
  • ベストアンサー率58% (36/62)
回答No.3

 試験されていたバッチの問題点は"SET D:\"です。コマンドプロンプトから"HELP SET"でSETコマンド確認して下さい。 また,意図しない動きを確認するには"@ECHO OFF"を"@ECHO ON"に書き換えると動作の確認がしやすいです。    たぶん,バッチファイルの引数の引き渡しのコーディング方法がわからないのかなと考え,サンプルを付けましたので確認して下さい。  "DOSプロンプト”関係はインターネット検索すれば詳しく説明されているサイトがありますのでまずは検索して見て下さい。 ■サンプルの使用方法  logfind keyword d:logfile.txt result.txt  と実行すればDドライブのカレントにあるlogfile.txtからkeywordが検索されresult.txtに結果が書き込まれます。 ■サンプル  次のソースを"logfind.bat"として保存して下さい。 @ECHO OFF IF '%1'=='' GOTO HELP IF '%2'=='' GOTO ERROR IF NOT EXIST %1 GOTO FILEDROP REM %1ファイルから%2の条件で一致するものを%3ファイルにリストアップ IF '%3'=='' GOTO STDEXE REM 正規表現の場合 findstr %2 %1 > %3 findstr /C:%2 %1 > %3 GOTO EXIT :STDEXE REM 正規表現の場合 findstr %2 %1 findstr /C:%2 %1 GOTO EXIT :FILEDROP ECHO %1 ファイルが見つからない為,処理を中断します。 GOTO HELP2 :ERROR ECHO 引数が足りません。 GOTO HELP2 :HELP ECHO ログファイルから文字列を検索してリストアップします。 :HELP2 ECHO LOGFIND logFile string [outFile] ECHO logFile 検索対象のLOGファイル ECHO string 検索する文字列 ECHO outFile 検索結果を格納するファイル,省略した場合は標準出力 :EXIT ECHO ON

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「うまくいかない」というのは, どのような現象を意味するのでしょうか? 余人には理解できないので, ・DOSプロンプト (<コマンドプロンプトか?) ではどのディレクトリでどのようなコマンドを入力してどのような結果になったのか ・バッチファイルではどのように記述し, どのように実行してどのような (意図しない) 結果になったのか をはっきりと書いてください. これは, 例えば「こちらではうまくいきましたよ」と書かれても, あなたには何も分からないですよね? それと同じことです.

mawoka
質問者

補足

説明不足の質問で大変申し訳ないです。気を付けます。 >>・DOSプロンプト (<コマンドプロンプトか?) ではどのディレクトリでどのようなコマンドを入力してどのような結果になったのか DOSプロンプト (<コマンドプロンプト)です。Dディレクトリに入っているファイルをLogfile.txtです。 『D:\findstr keyword logfile.txt > result.txt』問題なし。 >>・バッチファイルではどのように記述し, どのように実行してどのような (意図しない) 結果になったのか TEST.batの中に下記の様に記述して実行すると。 ******************** @echo off set D:\ findstr keyword logfile.txt > result.txt pause ******************** 結果は D:\ FINDSTR: 開くことができません (logfile.txt) 表示し、txtの中身も空になっています。

  • goosyu
  • ベストアンサー率58% (36/62)
回答No.1

検索する文字列を含む1行を保存していくことは可能です。 次の行はfindstrコマンドを使った例です。 findstr keyword logfile.txt > result.txt "logfile.txt"ファイルから"keyword"文字列を検索して,発見した行をそのまま"result.txt"ファイルに追加していきます。※ ※keyword、logfile.txt、result.txtは任意ですので環境に合わせて下さい。 尚、ちょっと気のきいた結果を残すのであればperlなどを使う方がいいと思います。

参考URL:
http://ykr414.com/dos/dos02.html#09
mawoka
質問者

お礼

回答ありがとうございます。Dosプロンプトでやってみて上手く行きました。バッチで書くときはどうなるでしょうか。 一応、DOSプロンプトでやった通りに書いてみたんですが、どうも上手くいきません。 その辺も教えて頂ければと思いますが、宜しくお願いします。

関連するQ&A