Supprimer le dossier par date
Exemple de code AutoIT - Supprimer le dossier par date
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...