2014年5月8日 星期四

用VBscript定時刪除暫存檔案

有很多時候系統因為查詢的關係會產生很多暫存檔案,然而若是系統本身沒有暫存檔管理功能的話,漸漸的暫存檔就會消耗硬碟空間,嚴重的話會導致作業系統空間不足而將服務給停止,因此定期刪除這些暫存檔案的技巧是管理的基本常識
所以寫一隻可以幫忙有條件清除的程序是很重要的。

檔案:Time2Delete.vbs
內容:
' 指定所有變數必須事先宣告才能使用
Option Explicit

'WScript.Echo("作業開始執行:" & Date & " " & Time)

' 宣告變數
Dim FSO, agoMins, modifiedDate, delFolder

' 請將下面的變數值換成你要的
' == 開始 ==
' 指定 n 分鐘前的檔案,現在是 15 分前
agoMins = 15
' 欲刪除檔案所在之目錄
delFolder = "C:\inetpub\wwwroot\tempfile"
' == 結束 ==

' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")

' 取得檔案的修改時間
modifiedDate = DateAdd("n", -agoMins, Date)

' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)

' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
 ' 宣告變數
 Dim file, subFolder

 ' 找出目前所在目錄內所有的檔案
 For Each file In folder.Files
  ' 檢查檔案日期是否符合條件,若符合,就刪除
  If ((file.DateLastModified <= modifiedDate)) Then
   'normal=0,readonly=1,hideen=2,system=4,Volume=8,Directory=16,Archive=32,Alias=64,Compressed=2048 
   If (file.attributes <> 1) then
    file.delete
   End If
  End If
 Next

 ' 如果遇到子目錄,也要進去檢查並刪除
 For Each subFolder in folder.SubFolders
  DelFilesInFolder subFolder
 Next
End Sub

'WScript.Echo("作業執行完畢:" & Date & " " & Time)


最後只要放在系統排程內,每15到30分鐘執行一次就OK啦!!

0 個回應: