http://q.hatena.ne.jp/1243299574 の関連なのですが、

一点気が付いたことがありまして・・・・
いただいたVBSでARCServeのジョブレポートを毎日参照すること
は可能なのですが、お客様の環境で 土 日 はバックアップ
をしていないです。
ということは、土 日 もARCServeのジョブレポートが作成されます
ので 金曜日のジョブレポートの参照はできないのではないでしょうか。
金曜日のジョブレポートを参照するには、
VBSで可能でしょうか。すいませんが、まず できるか できないか
をご教示ください。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2009/05/27 09:18:35
  • 終了:2009/05/27 10:33:58

ベストアンサー

id:fester No.1

fester回答回数124ベストアンサー獲得回数202009/05/27 09:44:14

ポイント120pt

土日のバックアップファイルは除外するということでしょうか?

であれば、次のようになります。


Option Explicit '変数宣言を強制
Const TARGETFOLDER = "D:\ARCServeBackup" 'ログファイルの格納フォルダ ←★ここを変える。このフォルダ中のログファイルをチェック
Const FILEPREFIX = "Daily Backup Status Report_data_" 'ファイル名のパターン 先頭からこのパターンのファイルを対象とする
Const ForReading = 1, ForWriting = 2, ForAppending = 8 'ファイル操作の定数
Const TITLE = "ARCServeのバックアップ" 'ダイアログのタイトル

'最新のファイルを探す。ファイルの作成日の最も新しいファイルを取得する。
Dim fso, folder, file
Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'ファイル操作のオブジェクトを生成
Set folder = fso.GetFolder(TARGETFOLDER) 'フォルダオブジェクトを作成

Dim prefixLen 'ファイル名のプレフィクスの長さ
Dim lastDate '作成日
Dim lastFile '新いファイル
prefixLen = Len(FILEPREFIX) 'ファイル名のプレフィクスの長さを取得
lastDate = CDate(0) '作成日の初期化
lastFile = "" '新いファイル名の初期化

'フォルダ中のファイルを列挙
For Each file In folder.Files
	If Left(file.Name,prefixLen) = FILEPREFIX Then
		'ファイル名がプレフィクスに合致している場合
		Dim d, f, w
		d = file.DateCreated
		f = file.Name
		w = Weekday(d)
		If w = vbSaturday Or w = vbSunday Then
			'土日のバックアップファイルは除外
		Else
			If CDate(lastDate) < CDate(d) Then
				'最新のファイルをキープする
				lastDate = d
				lastFile = f
			End If
		End If
	End If
Next

'ファイルが見つからない場合はエラー
If lastFile = "" Then
	MsgBox "ARCServeのバックアップログがありません。", vbExclamation, TITLE 'メッセージを表示
	Set fso = Nothing 'オブジェクトの破棄
	WScript.Quit '終わり
End If

'ファイルを開いて内容をまるごと取得
Dim strALL 'ファイルの内容
Set file = fso.OpenTextFile( TARGETFOLDER & "\" & lastFile, ForReading ) 'ファイルを開く
strALL = file.ReadAll 'ファイルの内容をまるごと取得
file.Close 'ファイルを閉じる
Set fso = Nothing 'オブジェクトの破棄

If InStr(strALL,"完了") > 0 Then
	'完了の文字が含まれていたら成功のメッセージを表示。
	MsgBox "バックアップに成功しました" & vbCrLf & vbCrLf & lastFile, vbInformation, TITLE
Else
	'完了の文字が含まれていない場合は失敗のメッセージを表示。
	MsgBox "バックアップは失敗しました" & vbCrLf & vbCrLf & lastFile, vbCritical, TITLE
End If


ただし最新ファイルの判断はファイルの作成日になっています。

ファイル名から判断していません。

ファイル名から判断したほうがよいとなると修正が必要です。

YYYY-MM-DD-o'clock-minutes-seconds

の部分は例として

2009-05-27-09-45-50

という表記ですか?

(すべてハイフン区切りでしょうか?)

実はこの部分が明確でなかったのでファイル作成日から判断するようにしてあります。

正確に知りたいところです。

id:meichi

すいません、早速ありがとうございます。m(_ _)m

>2009-05-27-09-45-50

>という表記ですか?

>(すべてハイフン区切りでしょうか?)

上記おっしゃるとおりです。

あと、大変すいません。

土日以外の祭日を含む場合ですが、下記の例のような場合 翌日の

3日に1日のジョブの失敗が確認できないのではないでしょうか。

例)

 1日(水) 営業日 ジョブ失敗

 2日(木) 祭日  ジョブ完了

解決方法はありますでしょうか。よろしくお願いします。

2009/05/27 10:05:28
  • id:fester
    ログファイル中に判断できるような材料があれば別ですが、祝祭日の判断はそのままではできません。
    スクリプト中に祝祭日をハードコードするとか、外部(テキストファイルやDBなど)にマスタとして持つことになります。
  • id:meichi
    たびたびありがとうございます。
    少し どうするか 考えてみます。
    一旦終了します。ありがとうございました。
  • id:meichi
    私の通常の判断でのポイントをお支払いさせていただきました。
    お支払いさせていただいた ポイント についてなにかありましたら、
    コメント欄にお願いします。
  • id:fester
    バックアップ成功の場合は、次のログ出力
    -,2,バックアップ,1,完了,2009-05-25 16:02:46,\\******,C:\TEST,完了,******

    バックアップ失敗の場合は、次のログ出力
    -,17,バックアップ,16,失敗,2009-05-25 16:43:52,-,-,不明,*******

    を出力するのですよね。
    土日はバックアップはされないがジョブレポートは作成されるということでしょうか。
    土日のログには、上記2パターンのログ出力はないということでしょうか?
  • id:meichi
    たびたびお世話になります。

    >バックアップ成功の場合は、次のログ出力
    >-,2,バックアップ,1,完了,2009-05-25 16:02:46,\\******,C:\TEST,完了,******

    >バックアップ失敗の場合は、次のログ出力
    >-,17,バックアップ,16,失敗,2009-05-25 16:43:52,-,-,不明,*******

    >を出力するのですよね。

    上記その通りです。

    >土日はバックアップはされないがジョブレポートは作成されるということでしょうか。

    はい、その通りです。

    >土日のログには、上記2パターンのログ出力はないということでしょうか?

    はい、すいません。検証機が手元になく 詳しい回答ができないのですが、
    上記2パターン以外のログが出力されると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません