54) ファイル内容による分岐の方法について Yuri 2002/03/07(木) 22:23 |
|
教えてください。 あるファイル(logfile.txt)の中を検索して 「●●は成功しました」という文章を見つけた場合は、その後の処理を継続し、 「●●は失敗しました」という文章を見つけた場合は、その後の処理を中止するという バッチファイルを作成したいのですが、どのように書けばよいのでしょうか? OSはWindowsNT4.0 SP6aです。 よろしくおねがいします。^^ |
|
|
57) Re:ファイル内容による分岐の方法について SYSOP 2002/03/08(金) 11:53 |
|
>あるファイル(logfile.txt)の中を検索して >「●●は成功しました」という文章を見つけた場合は、その後の処理を継続し、 >「●●は失敗しました」という文章を見つけた場合は、その後の処理を中止するという >バッチファイルを作成したいのですが、どのように書けばよいのでしょうか? >OSはWindowsNT4.0 SP6aです。 本質的には特別難しい処理とはいえないでしょうが、文字列検索に類する標準のコマンドは"FIND"しかなく、これは検索結果をERRORLEVELなどで返してはくれません。ですのでWindowsNTの標準のコマンドの範囲内では苦しいと思います。 その部分を補えるような文字列処理系のオンラインソフト(たとえば指定した文字列が見つかればERRORLEVEL XXXを返すとか)をお探しになるか、あるいは自作されるか、もしくはMicrosoftが配布しているもっと高機能なスクリプト言語=Windows Script Host を利用するか、といった選択肢になるんではないか、と思います。 ※Windows Script HostのWindowsNT4.0日本語対応版やオンラインヘルプは上記リンクでダウンロードできます。タダなのが最大のとりえですが、ちゃんと使うには入門書が要りそうで、ぼくはすこし動かしてみた程度なので内容的なご相談には乗れません(^^;。ただ、たとえば外部バッチファイルを起動し、出力されたファイルを読み取って、その内容により条件分岐……といったことが可能なのは確かです。 YanaKen |
|
<訂正> 指定した文字列が見つかった場合はERRORLEVEL 0になりますが、見つからなかった場合はERRORLEVELが返りますので、実用上はこれを検出して分岐することも可能です。 また、FINDのほかにFINDSTRというコマンドもあります。 |
|
|
58) Re2:ファイル内容による分岐の方法について とっぽ 2002/03/08(金) 12:51 |
|
0016.htm |
|
ちょっと、コメント。 確かに、LOGを解析して・・では、DOSのコマンドでは、無理だと思います。 DOSだけで、やる方法として、1つのアイディアなんですが、 参照しているLOGはファイルをもし、Batで行っているのであれば、 成功した時のログを出力するときに、何かのファイルを作成してあげれば、 IF EXIST 文で、判別出来るのでは、無いでしょうか? それぞれの項目づつで、ファイル名を変えていれば、分岐も出来ると思います。 ファイルの作成は、”echo y >ファイル名”で、作成出来ます。 処理の結果待ちは、自分が質問した、下記アドレスが参考になるのではないでしょうか、 0016.htm |
|
|
61) Re3:ファイル内容による分岐の方法について Yuri 2002/03/08(金) 22:56 |
|
>確かに、LOGを解析して・・では、DOSのコマンドでは、無理だと思います。 お返事ありがとうございます。 やっぱりDOSコマンドではだめですか~。 >DOSだけで、やる方法として、1つのアイディアなんですが、 >参照しているLOGはファイルをもし、Batで行っているのであれば、 >成功した時のログを出力するときに、何かのファイルを作成してあげれば、 参照ファイルを生成するソフトは私が作ったものでないので仕様をかえられないんです。それができたら確かに良いのですが^^; |
|
|
62) Re2:ファイル内容による分岐の方法について Yuri 2002/03/08(金) 22:58 |
|
お返事ありがとうございます。 そうですかあ。やっぱり無理ですかあ。 初心者なんですが、参考書をみて試してみたらFINDの結果のERRORLEBELはいつも0でした。 DOSプロンプトでは検索結果を変数に代入して定数と比較・・・とかも使えないんですね。う~ん。 Windows Script Hostは当然実行環境を用意しないといけないんですよね。NTサーバにいれて動作は大丈夫なんでしょうか? (初心者SEなんで良くわかんないんです^^;) YanaKenさんありがとうございました。 これから検討してみます。^^ |
|
|
64) Re3:ファイル内容による分岐の方法について SYSOP 2002/03/09(土) 00:41 |
|
Yuri さん >初心者なんですが、参考書をみて試してみたらFINDの結果のERRORLEBELはいつも0でした。 >DOSプロンプトでは検索結果を変数に代入して定数と比較・・・とかも使えないんですね。う~ん。 このご質問へのコメントって実はかなり「隔靴掻痒」で、特定用途用の間に合わせ的プログラミングって、ほんの数行程度、多少慣れたヒトなら(別に達人でなくても=たとえばボクでも)数分でできちゃったりします。 って、別に自慢でいってるわけじゃなくて、ぼくはプロじゃありませんし、使ってるプログラミング言語も10数年前から変わってない(^^;という化石みたいな環境ですが、それですらとにかくプログラミング言語が1つ使えれば、それで補完することによって、コマンド・プロンプト上でやれること自体がぐんと広がるわけです。 ですから、何か一つそういう「間に合わせ的な用途に使えるツール」を身に付けておくことは、そういったお仕事をされているのであれば特に、これからラクするためにも(^^;大事なんではないかと思います。 >Windows Script Hostは当然実行環境を用意しないといけないんですよね。NTサーバにいれて動作は大丈夫なんでしょうか? >(初心者SEなんで良くわかんないんです^^;) ぼくは個人ユーザーなので……詳しくは紹介したサイトとかで確かめてごらんになればと思います。ただ、「在来のバッチファイルじゃ力不足」ということで、システム管理者などを主な対象に、ほかでもないMicrosoftが公式に開発・配布しているツールなわけですから、問題ないんじゃないでしょうか。 YanaKen |