Eliminar carpeta por fecha

Ejemplo de código de AutoIT - Eliminar carpeta por fecha

C05348A3-9AB8-42C9-A6E0-81DB3AC59FEB
           

Ejemplo de código de AutoIT: elimine subcarpetas con más de un número determinado de semanas

Imagine este escenario... en un servidor de Windows en particular, una aplicación defectuosa crea carpetas temporales y no las elimina.

Este script de AutoIT se puede usar para eliminar todas las subcarpetas que tienen más de un número determinado de semanas. La antigüedad de la carpeta está determinada por la fecha de creación de la propia carpeta, no mira ninguno de los archivos que contiene; o la última fecha de acceso! Luego se agrega un evento al registro de eventos del servidor para enumerar la cantidad de carpetas eliminadas, así como el espacio guardado (en MB). Aquí está el código fuente:

;===============================================================================
; Description:		Delete folder by date
; Author(s):		Videre Research, LLC - http://videreresearch.com
;===============================================================================
 
#Include <file.au3></file.au3>
#Include <array.au3></array.au3>
#Include <date.au3></date.au3>
 
;The path of the folder containing the temporary folders to be deleted
$TempPath = "C:\Program Files\temp\dmserver\tmp"
;Files older than this given number of weeks will be deleted
$numberOfWeeks = 3
 
;The size of the folder before the delete
$sizeBefore = Round(DirGetSize($TempPath) / 1024 / 1024)
 
$FileList=_FileListToArray($TempPath, "*", 2)
If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf
;_ArrayDisplay($FileList,"$FileList")
 
$NUmberOfFiles = UBound($FileList)
ToolTip($NUmberOfFiles & "Files ")
 
$deletedFolders = 0
 
for $i = 1 To $NUmberOfFiles - 1
	ToolTip(ProcessGetStats() & " - File " & $i & " of " & $NUmberOfFiles & " - " & $FileList[$i])
	if FileExists($TempPath & "\" & $FileList[$i]) Then
		$t =  FileGetTime($TempPath & "\" & $FileList[$i], 1)
		If Not @error Then
			$yyyymd = $t[0] & "/" & $t[1] & "/" & $t[2]
			ConsoleWrite($TempPath & "\" & $FileList[$i] & " - " & $yyyymd)
			if _DateDiff( 'w', $yyyymd, _NowCalc()) > $numberOfWeeks Then
				ConsoleWrite(" old" & @CRLF)
				$deletedFolders += 1
				DirRemove($TempPath & "\" & $FileList[$i], 1)
			Else
				ConsoleWrite(@CRLF)
			EndIf
		EndIf
	EndIf
Next
 
$sizeAfter = Round(DirGetSize($TempPath) / 1024 / 1024)
$size = $sizeBefore - $sizeAfter
 
;Add an event to the event log
$SystemEvent='eventcreate /T WARNING /ID 999 /L APPLICATION /SO "File Cleanup" /D "' & $deletedFolders & ' old temp folders ('& $size &' MB) were deleted in folder ' & $TempPath & '."'
RunWait(@ComSpec & " /c " & $SystemEvent, "", @SW_HIDE)
Sleep(10000)

Ahora todo lo que tiene que hacer es programar esta tarea diaria o semanalmente, y los archivos estarán bajo control...

Comentarios publicados: 0