Yêu lệnh PowerShell của Jeff, nhưng đối với giải pháp vbs thay thế cho các máy Windows không có PowerShell, bạn có thể thử cách sau.
Lưu dưới dạng <filename>.vbs
và thực thi:
<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]
Tham số thứ ba, [Action]
là tùy chọn. Không có nó các tập tin cũ hơn <NoDaysSinceModified>
sẽ được liệt kê. Với nó được đặt vì D
nó sẽ xóa các tập tin cũ hơn<NoDaysSinceModified>
Thí dụ
PurgeOldFiles.vbs "c:\Log Files" 8
sẽ liệt kê tất cả các tệp trong c:\Log Files
hơn 8 ngày tuổi
PurgeOldFiles.vbs "c:\Log Files" 8 D
sẽ xóa tất cả các tệp trong c:\Log Files
hơn 8 ngày tuổi
lưu ý: đây là phiên bản sửa đổi của tập lệnh của Haidong Ji trên SQLServerCentral.com
Option Explicit
on error resume next
Dim oFSO
Dim sDirectoryPath
Dim oFolder
Dim oFileCollection
Dim oFile
Dim iDaysOld
Dim fAction
sDirectoryPath = WScript.Arguments.Item(0)
iDaysOld = WScript.Arguments.Item(1)
fAction = WScript.Arguments.Item(2)
Set oFSO = CreateObject("Scripting.FileSystemObject")
set oFolder = oFSO.GetFolder(sDirectoryPath)
set oFileCollection = oFolder.Files
If UCase(fAction) = "D" Then
'Walk through each file in this folder collection.
'If it is older than iDaysOld, then delete it.
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
Next
else
'Displays Each file in the dir older than iDaysOld
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
Wscript.Echo oFile.Name & " " & oFile.DateLastModified
End If
Next
End If
'Clean up
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
Set fAction = Nothing