VB Script per la rotazione dei file di log

[level-pro-member]
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:

filename log

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.

Scritto da Claudio Agnesani

[/level-pro-member]