Script per l’eliminazione dei file obsoleti
Spesso capita di dover gestire il backup di alcuni file e di volere mantenere soltanto i più recenti. Avevo già pubblicato uno script per eliminazione dei file obsoleti in nel post Clear dei file temporanei dell’utente in Windows XP, ma lo script proposto non è così “duttile” per gestire al meglio l’esigenze negli scenari di backup o mantenimento di file recenti.
In questo script VBS che scritto per queste situazioni è possibile specificare la directory in cui eliminare i file file con data creazione superiore ad un numero di giorni specificato e un numero minimo di file che si intende comunque mantenere (utile nel caso ad esempio una procedura di backup fallisse).
Esempio: cscript DeleteOlderFile.vbs Path Days FilesToMaintain
Option Explicit
On Error Resume Next
If WScript.Arguments.Count <> 3 Then
WScript.Echo “Error: Invalid number of parameters.” & vbCrLf & _
“Syntax:” & vbCrLf & _
“DeleteOlderFiles pathDirectory days filesToMaintain”
WSCript.Quit
End If
Dim pathDirectory
Dim days
Dim filesToMaintain
pathDirectory = WScript.Arguments(0)
days = Int(WScript.Arguments(1))
filesToMaintain = Int(WScript.Arguments(2))
Dim fso, folder, file, olderFilePath, count
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set folder = fso.GetFolder(pathDirectory)
count=0
Do While folder.Files.Count > filesToMaintain
olderFilePAth = GetOlderFile(folder)
If olderFilePAth <> “” Then
Set file = fso.GetFile(olderFilePath)
If DateDiff(“d”, file.DateLastModified, Now) >= days Then
file.Delete
If Not fso.FileExists(olderFilePAth) Then
count=count+1
End If
Else
Exit Do
End If
Else
Exit Do
End If
Loop
WScript.Echo count & ” files deleted.”
Set fso = Nothing
Set folder = Nothing
Set file = Nothing
Function GetOlderFile(folder)
Dim olderFile
Set olderFile = Nothing
Dim file
For Each file In folder.Files
If olderFile Is Nothing Then
Set olderFile = file
ElseIf olderFile.DateCreated > file.DateCreated Then
Set olderFile = file
End If
Next
If olderFile Is Nothing Then
GetOlderFile = “”
Else
GetOlderFile = olderFile.Path
End If
End Function