Diventa Autore per CoreTech | Scopri di più
23/04/13 CoreTech Blog
Spesso si ha il problema di dover far ruotare i file di LOG generati da una o più applicazioni. Su sistemi Windows è possibile utilizzare uno script in VBS per risolvere questa esigenza. Di seguito un esempio di come sia possibile rinominare un file di LOG con la data corrente e cancellare i file più vecchi di una determinata data.
On Error Resume Next
‘Directory in cui sono salvati i file di log
strLogDir = “C:\Users\Claudio\Desktop\test”
‘Nome di default dei file di log generati dall’applicazione
strLogName = “filename”
‘Estensione dei file di log generati dall’applicazione
strLogExt = “.log”
‘Numero dei giorni che si vuole conservare un file di log
intCutoff = 1
‘———————————–
strTargetDate = ShortDate(Date – intCutoff)
‘Comando di rinomina del file che aggiunge data e ora di rinomina
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
strNewName = strLogName & “-” & ShortDate(Now) & “-” & ShortTime(Now) & strLogExt
objFSO.MoveFile strLogDir & “\” & strLogName & strLogExt, strLogDir & “\” & strNewName
‘Comando di cancellazione dei file con estensione .log più vecchi di quanto definito nella variabile intCutoff
Set objWMIService = GetObject(“winmgmts:\\.\root\cimv2”)
Set colFileList = objWMIService.ExecQuery _
(“ASSOCIATORS OF {Win32_Directory.Name=” & Chr(39) & strLogDir & Chr(39) & “} Where ” _ & “ResultClass = CIM_DataFile”)
For Each objFile In colFileList
strDate = Left(objFile.LastModified, 8)
If strDate < strTargetDate Then
If objFile.Extension = “log” Then
objFile.Delete
End If
End If
Next
Function ShortDate(dtmDate)
strDay = Day(dtmDate)
If Len(strDay) < 2 Then
strDay = “0” & strDay
End If
strMonth = Month(dtmDate)
If Len(strMonth) < 2
Then strMonth = “0” & strMonth
End If strYear = Year(dtmDate)
ShortDate = strYear & strMonth & strDay
End Function
Function ShortTime(dtmTime)
strHour = Hour(dtmTime)
If Len(strHour) < 2 Then
strHour = “0” & strHour
End If
strMinute = Minute(dtmTime)
If Len(strMinute) < 2 Then
strMinute = “0” & strMinute
End If
strSecond = Second(dtmTime)
If Len(strSecond) < 2 Then
strSecond = “0” & strSecond
End If
ShortTime = strHour & strMinute & strSecond
End Function
Di seguito l’immagine di come viene rinominato un file, salvato dalla vostra applicazione, utilizzando questo script:
Viengono aggiunti al nome del file salvato dal vostro applicativo (filename) anno mese giorno e ora minuti e secondi.
Questo script può essere utilizzato per qualsiasi tipo di file con qualsiasi estensione, basta parametrizzare correttamente le variabili nello script.