2010年4月19日 星期一

定時自動清除檔案!

在unix-like系統上,定時砍檔。砍掉120日以前的檔案!
要怎麼處理?
簡單!運用find指令(註:example 1)就行。
先利用find執行一下掃檔檢視的功能,成功找到想砍的檔案群之後,
再變化一下指令(註:example 2),寫成簡單的script,放給cron執行就成了!

example 1:
find /find-path -type f -mtime +120 -exec ls -lhrt {} \;
找出120天以上的舊檔案!

example 2:
find /find-path -type f -mtime +120 -exec rm -f {} \;
找出120天以上的舊檔案,並且砍掉!

OK!談談在windows 系統下怎麼辦到這鳥事。

以下source code 擷取自 jerry_IT資訊技術手扎
內容存成 DelFiles.vbs 即可點點(滑鼠動作)執行,刪除三天以上,放在E:\Temp裡的檔案!
+=========================================================+
Option Explicit

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

Dim FSO, agoDays, modifiedDate, delFolder

' 指定 n 天前的檔案,現在是 3 天前
agoDays = 3
' 欲刪除檔案所在之目錄
delFolder = "E:\Temp"
' == 結束 ==

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

' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)

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

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

' 找出目前所在目錄內所有的檔案
For Each file In folder.Files
' 檢查檔案日期是否符合條件,若符合,就刪除
If ((file.DateLastModified <= modifiedDate)) Then
file.delete
End If
Next

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

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

+=========================================================+

我查了其他相關的資料,加上上述原文討論區。
(資料來源據說在IThome,http://ithelp.ithome.com.tw/question/10009001)

發現上述的VB script CODE 是最簡潔的,而JerryIT的說明也算够清楚了。
有沒有發覺到,windows 的系統對視覺化操作的設計很人性化,
只要你開檔案總管,點選檔案,滑鼠右鍵,刪除(或是直接按Delete鍵)!
但是對IT管理的技術人員嘛……

我之所以喜歡 Linux ,真的是不沒憑沒據的!

1 則留言:

Unknown 提到...

I am glad that is useful.

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!