VBScriptでERRのログファイルがあったらメールに添付して送信する
一般職のお姉さんがどう見ても高校生にしか見えないので、
「いくつなんですか?」と超上から目線で伺ったところ、
34歳という回答で心底驚きました。
まさか年上だったなんて…(° ꈊ °|||)
2年目くらいだと思ってたよ…。
なんとお子さんもいました( ⓛ ω ⓛ *)
失礼ついでに「旦那さんはロリコンなんですか?」とも聞いておいたヽ(≝∀≝)ノ
今日は「エラーログが出たらメールで送信されるようにして」と
いうことで朝からプログラミングなう。
こういうゴミプログラ…便利ツールを作るのが私のお仕事。
魔法使いだからね!
初めてVBScriptを使ってみたけど、ExcelのVBAとほとんど同じなんだね。
宣言のところで、型を指定できないのにちょっとハマッたけど…。
あと、ファイルの存在チェックをするために、
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