人生のプチ美学を教えてください!!

vbscript初心者です。ご教授頂けますと幸いです。

ネットワーク監視ログが毎朝出力され、そのログの中身を、各サーバにログインし手作業で確認を行っています。
この作業を、VBscriptで行いたいと思っているのですが、どうもうまくいかず困っています。

正常時のログには必ず「1,2」と文字列が出力されます。
この文字列を検索対象にして、「1,2」の記述があれば、新規の結果確認ログに「ネットワークは正常です」とコメントを付けて、ファイルを出力し、

「1,2」が見つからなかった場合は、そのログファイルの3行目のみを、新規の結果ログファイルに抽出する、VBscriptを作成したいと思っています。

異常時のログファイルには、異常を知らせるコメントが3行記述されてます。必要な行は、3行目だけなので、3行目を結果ログとして出力したい。

以下、構文ですがVB初心者であり、色々なサイトを見て作ってみましたが全然動かず今回、ここに投稿しました。

'検索対象のテキストファイルのオープン
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objFs = Fs.OpenTextFile(NlbTmp)

If Instr(A,"1,2") > 0 Then
MsgBox "ネットワークは正常です"
Else

”異常の場合の条件分岐が分からず・・・”


Set oText = CreateObject("Scriptting.FileSystemObject").CreateTextFile( 結果ログ.log, True )

str = Fs.ReadLine
Fs.WriteLine(str)
End If


自分で作成するのが初めてな物で本当によろしくお願い致します。

A 回答 (2件)

1.変数の誤用を避けるため、最初にOption Explicit文を置きます。


 この文があると、変数を事前定義せずに使うとエラーになります。
 この文が無いと変数名を間違えてもエラーにならないので、誤動作
 する可能性が高くなります。
2.Set WshShell = WScript.CreateObject("WScript.Shell") ?
 使わないオブジェクトは作らないようにします。
3.ファイルアクセスオブジェクト
 Dim objFs
 Set objFs = CreateObject("Scripting.FileSystemObject")
4.入力ファイルオブジェクト
 Dim inFle
 Set inFile = objFs.OpenTextFile("C:\~", 1) '1は入力モード
5.出力ファイルオブジェクト
 Dim outFile
 Set outFile = objFs.CreateTextFile("C:\~", True) 'Trueは上書き可
6.テキストの読み込み
 Dim text
 text = inFile.ReadLine() '1行分の読み込み
7.テキスト内に"1,2"があるかを調べる
 掲題のようにInStrでも良いし、RegExpを使っても良いでしょう。
 http://msdn.microsoft.com/ja-jp/library/cc392403 …
8.条件分岐
 If InStr(text, "1,2") > 0 Then
    WScript.Echo "ネットワークは正常です"
 Else
    '3行目をtextに読み込む
    outFile.WriteLine text '改行付きで書き込む
 End If
 '終了

この回答への補足

nda23さん

ご返信遅くなりすみません。

ご回答頂いた情報を元に作成してみます。
結果ご連絡させて頂きます。

補足日時:2009/05/22 15:08
    • good
    • 0
この回答へのお礼

nda23さん

ご連絡遅くなりすみませんでした。
無事、解決できました。
今後ともよろしくお願いいたします。

お礼日時:2009/05/25 13:19

小生もvbscript初心者ですので、


答えられるかどうかは分かりませんが。
補足要求です。

>ネットワーク監視ログが毎朝出力され、そのログの中身を、各サーバにログインし手作業で確認を行っています。
ログインもVBscriptで行う?

>正常時のログには必ず「1,2」と文字列が出力されます。
正常時のログファイルと異常時のログファイルは同じもの?
また特定の文字列(1,2)は何行目?
正常、異常に関わらず、データは3行固定なのでしょうか?


作成したコード全体の開示はできますか?
vbscriptは開発環境初が貧弱ですので、読み込みや書き込み、比較などを分解して、
それぞれコーディングする方が理解しやすいと思います。
それぞれ上手く動作したら組み合わせる訳です。

二度手間かも知れませんが、まとめてコーディングすると、
どこで間違えているか分かりません。

この回答への補足

kiki_sさん

ご返信遅くなりすみません。情報が不足でした。。

ログインは、VBscriptでは行いません。
ログファイルが対象SVからFTPで転送されてきます。

正常時と異常時のログの中身は別になります。
【正常時のログ】
WLBS クラスタ制御ユーティリティ
クラスタ 192.168.100.10
ホスト 1 はクラスタに参加してから 1 回、収束状態に入りました。
前回の収束が完了したのは大体次のとおりです: 2009/05/21 14:21:12
ホスト 1 はクラスタの一部として次のホストを既定値で収束しました:
1, 2

【異常時のログ】
WLBS クラスタ制御ユーティリティ
クラスタ 192.168.100.10
ホスト 1 は停止していてクラスタの収束状態を取得できません

以上がログの中身です。異常時のログは、ほぼ全て固定で出力されます。

補足日時:2009/05/22 15:01
    • good
    • 0

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