重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (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
    • good
    • 0

「うまくいかない」というのは, どのような現象を意味するのでしょうか? 余人には理解できないので,


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

この回答への補足

説明不足の質問で大変申し訳ないです。気を付けます。
>>・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の中身も空になっています。

補足日時:2009/08/05 00:50
    • good
    • 0

検索する文字列を含む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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/08/04 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!