Supprimer le dossier par date

Exemple de code AutoIT - Supprimer le dossier par date

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

AutoIT Code Sample - Supprimer les sous-dossiers antérieurs à un certain nombre de semaines

Imaginez ce scénario... sur un serveur Windows particulier, une application défectueuse crée des dossiers temporaires et ne les supprime pas.

Ce script AutoIT peut être utilisé pour supprimer tous les sous-dossiers antérieurs à un certain nombre de semaines. L'âge du dossier est déterminé par la date de création du dossier lui-même, il ne regarde aucun des fichiers à l'intérieur ; ou la dernière date d'accès ! Un événement est alors ajouté au journal des événements du serveur pour lister le nombre de dossiers supprimés ainsi que l'espace économisé (en Mo). Voici le code source :

;===============================================================================
; 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)

Il ne vous reste plus qu'à programmer cette tâche quotidiennement ou hebdomadairement, et les dossiers seront sous contrôle...

Commentaires publiés : 0