Borrar Log de una carpeta

Iniciado por sagito3x, 12 Febrero 2013, 17:50 PM

0 Miembros y 1 Visitante están viendo este tema.

sagito3x

Buenas, como estan.

Mi paso por aca es que solicito de ustedes una ayuda, ya que soy nob en esto.

tengo este script.

Código (VB) [Seleccionar]
Option Explicit
on error resume next
Dim oFSOLog
Dim oFSOProc
Dim sDirectoryPathLog
Dim sDirectoryPathProc
Dim oFolderlog
Dim ofolderProc
Dim oFileCollectionlog
Dim oFileCollectionProc
Dim oFile
Dim iDaysOld



'Personaliza los datos que necesita modificar

iDaysOld = 15
Set oFSOLog = CreateObject("Scripting.FileSystemObject")
sDirectoryPathLog = "D:\Prueba"
 set oFolderLog = oFSOLog.GetFolder(sDirectoryPathLog)
set oFileCollectionLog = oFolderLog.Files

'si existen archivos mayores a (x) dias, se eliminaran.

For each oFile in oFileCollectionLog
 If oFile.DateLastModified < (Date() - iDaysOld) _
 And LCase(oFSOLog.GetExtensionName(oFile.Name)) = "log" Then
  oFile.Delete(True)
 End If
Next

'Clean up
Set oFSOLog = Nothing
Set oFSOProc = Nothing
Set oFolderLog = Nothing
Set oFolderProc = Nothing
Set oFileCollectionLog = Nothing
Set oFileCollectionProc = Nothing
Set oFile = Nothing


Como verán lo que hace es borrar los logs de una carpeta desde una determinada fecha hacia atras, con esto lo que quiero hacer es borrar los log que tiene la carpeta del Active Directory. Pero hay un tema que necesito resolver, que hay un log en especial que no deseo que se borren ya que si lo hace no levantaria las DB que son res1.log y res2.log que tienen fecha muy por debajo de la fecha de eliminacion.

Si podrian ayudarme a resolver este inconveniente se los agradecere infinitamente :D

Muchas gracias de antemano

Eleкtro

#1
Código (vb) [Seleccionar]
   For each oFile in oFileCollectionLog
       If oFile.DateLastModified < (Date() - iDaysOld) _
       And LCase(oFSOLog.GetExtensionName(oFile.Name)) = "log" _
       And not LCase(oFile.Name) = "res1.log" _
       And not LCase(oFile.Name) = "res2.log" Then
           msgbox(oFile.Name)
       End If
   Next


EDITO: Creo que se podría mejorar evitando esas dos comprobaciones extra, eliminando "res1.log" y "res2.log" de "oFileCollectionLog", pero bueno así va bien :P

Saludos!








sagito3x

#2
Muchas gracias me quedo perfecto.

lo agrego por si a alguien le interesa

Código (vb) [Seleccionar]
Option Explicit
on error resume next
Dim oFSOLog
Dim oFSOProc
Dim sDirectoryPathLog
Dim sDirectoryPathProc
Dim oFolderlog
Dim ofolderProc
Dim oFileCollectionlog
Dim oFileCollectionProc
Dim oFile
Dim iDaysOld



'Personaliza los datos que necesita modificar

iDaysOld = 30
Set oFSOLog = CreateObject("Scripting.FileSystemObject")
sDirectoryPathLog = "D:\Archivos de Programa\Exchsrvr\Zilicom"
 set oFolderLog = oFSOLog.GetFolder(sDirectoryPathLog)
set oFileCollectionLog = oFolderLog.Files

'si existen archivos mayores a (x) dias, se eliminaran.

For each oFile in oFileCollectionLog
 If oFile.DateLastModified < (Date() - iDaysOld) _
 And LCase(oFSOLog.GetExtensionName(oFile.Name)) = "log" _
 And not LCase(oFile.Name) = "res1.log" _
 And not LCase(oFile.Name) = "res2.log" Then
oFile.Delete(True)
 End if
Next

'Clean up
Set oFSOLog = Nothing
Set oFSOProc = Nothing
Set oFolderLog = Nothing
Set oFolderProc = Nothing
Set oFileCollectionLog = Nothing
Set oFileCollectionProc = Nothing
Set oFile = Nothing


lo unico que tienen que cambiar es la cantidad de dias