先去下載 forfiles
forfiles /p "E:\bak" /s /d -3 /c "cmd /c del @FILE"
教學參考
http://brianchang168.blogspot.tw/2008/04/forfiles-windows.html
http://diary.tw/tim
peter0921提到:
只留最近這三天的檔案
Option Explicit
'Wscript.Echo("Started:" & Date & " " & Time)
'宣告變數
Private FSO,DelFile,File,dstFolder,modifiedDate1,modifiedDate2,subFolder
'Private DelFile
'程式開始
Set FSO = CreateObject("Scripting.FileSystemObject")
'設定要處理的目錄
DelFile = "D:\TEMP"
'取得最近的一個檔案修改日期
Set dstFolder = FSO.GetFolder("D:\TEMP")
For Each File In dstFolder.Files
'判斷日期
if ((File.DateLastModified >= modifiedDate1)) Then
modifiedDate1 = File.DateLastModified
'WScript.Echo "最近日期1: " & modifiedDate1
End If
Next
'最近的檔案修改日期 - 3天
'刪除小於3天前的檔案
modifiedDate2 = modifiedDate1 - 3
'WScript.Echo "最近日期2: " & modifiedDate2
For Each File In dstFolder.Files
'WScript.Echo File.Name
'WScript.Echo "該檔最後修改日期: " & FSO.GetFile(File).DateLastModified
'判斷日期
if ((File.DateLastModified <= modifiedDate2)) Then
'WScript.Echo "符合日期的檔案: " & File
File.delete(true)
End If
Next
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in dstFolder.subFolders
if ((subfolder.DateLastModified <= modifiedDate2)) Then
subfolder.delete(true)
End IF
Next
'WScript.Echo "處理完成"
Set FSO = Nothing
Set dstFolder = Nothing
***第一次回答時,看錯以為只是刪除3天前檔案...
***後來才發現是只留最近3天...
你說是備份問題,那麼用WIN7/SERVER2008內建的ROBOCOPY指令,可以參數:
/MAXAGE:n :: 檔案期限上限 - 排除 n 日/日期之前的檔案。
/MINAGE:n :: 檔案期限下限 - 排除 n 日/日期之後的檔案。
/MAXLAD:n :: 上次存取日期上限 -排除自 n 日後未使用的檔案。
/MINLAD:n :: 上次存取日期下限 - 排除自 n 日後使用的檔案。
(如果 n < 1900 則 n = n 日,否則 n = YYYYMMDD 日期)。
實際做法這樣:
例從D槽TESTS資料夾備份到D槽TESTD資料夾但是排除最新三天的,並且留下紀錄檔。
寫一批次檔內容如下:
<pre class="c" name="code">@robocopy D:\tests d:\testd /S /MOVE /MINAGE:3 /V /FP /TS /log+:d:\testd\bklog.log
每天排程執行批次檔即可。LOG檔部分就看個人需要囉。
詳細ROBOCOPY指令請在命令提示字元下打ROBOCOPY /?就知道了。