捐血一袋救人一命

2010年4月21日 星期三

將Exchange 2003 SPAM Mail按照日期歸檔#1(使用Windwos Script)

使用 Exchange 2003 的 IMF 功能時,

畢竟它還是會誤判,所以保險的作法是將 SPAM Mail 封存,

如果有漏信,再來 SPAM Mail Folder找漏信。

結果,太久沒去看 SPAM Mail Archive Folder,裡面累積了數十萬封廣告信,

每一封廣告信都是 .EML 檔案,純文字格式,可以用 Outlook Express 開啟閱讀。

重點是,在檔案總管一進入此目錄時,就因為檔案太多,造成系統無回應。

為了處理這個狀況,只好在命令提示字元模式下,以指令搬移檔案,但是這樣很花時間,

所以我寫了一支小程式,依照日期建立目錄,同時將每天的廣告信搬到該目錄下,

這樣就不會造成一個目錄底下有太多檔案,系統忙著讀取資訊而沒有回應。


' 取得昨天的日期
dtmYesterday = Date() - 1
' 將昨天的日期取出年份
strYear = left(dtmYesterday,4)
' 將昨天的日期取出月份

'  因為月份小於10時,不會補 0, 這樣目錄看起來會有點亂,所以稍微加工一下
if mid(dtmYesterday,7,1) = "/" then
strMonth = "0" & mid(dtmYesterday,6,1)
else
strMonth = mid(dtmYesterday,6,2)
end if
' 將昨天的日期取出日期

' 因為日期小於 10時,不會補零,這樣目錄看起來會有點亂,所以稍微加工一下
if mid(dtmYesterday,len(dtmYesterday)-1,1) = "/" then
strDay = "0" & right(dtmYesterday,1)
else
strDay = right(dtmYesterday,2)
end if
strYesterday = strYear & strMonth & strDay
' 以昨天的日期來建立目錄
ParentFolder = "E:\Exchsrvr\UCEArchive" 
set objShell = CreateObject("Shell.Application")
set objFolder = objShell.NameSpace(ParentFolder)
objFolder.NewFolder strYesterday
' 將檔名包含昨天日期的檔案,全數搬移到昨天日期的目錄下
Set objFSO = CreateObject("Scripting.FileSystemObject")
FileNamePatten = "ARCH_" & strYesterday & "*.EML"
objFSO.MoveFile "E:\Exchsrvr\UCEArchive\" & FileNamePatten , "E:\Exchsrvr\UCEArchive\" & strYesterday

' 這只是告知程式執行完畢的訊息,要不然完全沒有訊息,程式有沒有跑,有沒有完都不知道!
wscript.echo strYesterday & " Job is done !"

0 意見: