IT Soldier Sakuri !!

Oracle使い。いつのまにかIT戦士になってしまったさくりの可哀想な奮闘記。

VBScriptでERRのログファイルがあったらメールに添付して送信する

一般職のお姉さんがどう見ても高校生にしか見えないので、
「いくつなんですか?」と超上から目線で伺ったところ、
34歳という回答で心底驚きました。
まさか年上だったなんて…(° ꈊ °|||)
2年目くらいだと思ってたよ…。
なんとお子さんもいました( ⓛ ω ⓛ *)
失礼ついでに「旦那さんはロリコンなんですか?」とも聞いておいたヽ(≝∀≝)ノ



今日は「エラーログが出たらメールで送信されるようにして」と
いうことで朝からプログラミングなう。
こういうゴミプログラ…便利ツールを作るのが私のお仕事。
魔法使いだからね!

初めてVBScriptを使ってみたけど、ExcelVBAとほとんど同じなんだね。
宣言のところで、型を指定できないのにちょっとハマッたけど…。


あと、ファイルの存在チェックをするために、
FileSystemObjectのFileExists()を使おうと思ったんだけど、
ワイルドカードが使えなくて困った。
CopyFile()、MoveFile()、DeleteFile()ではワイルドカード使えるのに何で?

そんなときに下記サイト様に神的なFunctionが置かれていたので、
お借りします(*`・ω・)ゞ
FileExists()でワイルドカードが使えない。その代替方法: Windows Script Programming

' **********************************************
' ***   ログファイルを送付する
' ***
' ***   作成者:  SAKURI
' ***   作成日:  2015/09/17
' ***
' **********************************************
Dim myAttachment
Dim objFileSys
Dim strScriptPath
Dim strBadFile
Dim numFlg
Dim fnameArrayList
Dim objFolder

Set objNetwork = WScript.CreateObject("WScript.Network")
Set oMsg = CreateObject("CDO.Message")

'送り主
oMsg.From = "xxxx@sample.com"

'宛先
oMsg.To = "xxxx@sample.com; xxxx@sample.co.jp "


'ログファイルの存在チェック
Set objFileSys = CreateObject("Scripting.FileSystemObject")

If FileExists("c:\sakuri\LOG\ERR*.log") = True Then

    'メールタイトル
    oMsg.Subject = "ログファイル送信【" & Now & "】"

    'メール本文
    oMsg.TextBody = "自動配信メールです。" & vbCrLf & _
    "-------------------------" & vbCrLf & _
    Now & vbCrLf & _
    "-------------------------" & vbCrLf & _
    "添付のログファイルを確認してください。"

    '添付ファイル
    Set objFolder = objFileSys.GetFolder("c:\sakuri\LOG\ERR")
    For Each objItem In objFolder.Files
        If mid(objItem.Name,1,3) = "ERR" Then
            oMsg.AddAttachment("c:\sakuri\LOG\ERR\" & objItem.Name)
        End if
    Next

Else
    'メールタイトル
    oMsg.Subject = "データは正常に処理されました。【" & Now & "】"

    'メール本文
    oMsg.TextBody = "自動配信メールです。" & vbCrLf & _
    "-------------------------" & vbCrLf & _
    Now & vbCrLf & _
    "-------------------------" & vbCrLf & _
    "データは正常に処理されました。"

End If

Set objFileSys = Nothing

'SMTPサーバ設定
oMsg.Configuration.Fields.Item _ 
  ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item _ 
  ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "XXX.XXX.XXX.XXX"
oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
oMsg.Configuration.Fields.Update
oMsg.Send


Function FileExists(Spec)
 Dim fso
 Dim ParentFolderName
 Set fso=CreateObject("Scripting.FileSystemObject")
 ParentFolderName=fso.GetParentFolderName(Spec)
 If ParentFolderName="" Then ParentFolderName="."
 On Error Resume Next
 fso.CopyFile Spec,ParentFolderName
 FileExists=Err.Number<>53
End Function