#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Global $sFilePath = @ScriptDir & '\Testdateien' ; hier den gewünschten Pfad ohne abschließenden \ angeben
Global $aFileList
Global $iKeepFiles = 5 ; Anzahl der neuesten Dateien die nicht gelöscht werden

If Not FileExists($sFilePath) Then Exit MsgBox(0, 'Fehler', 'Pfad <' & $sFilePath & '> nicht gefunden' & @CRLF)

; Dateiliste in ArrayRec einlesen
$aFileList = _FileListToArrayRec($sFilePath, "*", $FLTAR_FILES, $FLTAR_NORECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
If @error Then Exit MsgBox(0, 'Fehler', 'Fehler ' & @error & ' in _FileListToArrayRec' & @CRLF)

; Array Dateiliste um eine Spalte für das 'Erstellungsdatum' erweitern :
_ArrayColInsert($aFileList, 1)

; Erstellungsdatum (Format=String) in das Array eintragen :
For $i = 1 To $aFileList[0][0] Step 1
	$aFileList[$i][1] = FileGetTime($aFileList[$i][0], $FT_CREATED, $FT_STRING)
Next

; nur zur Anzeige : erweitertes Array
_ArrayDisplay($aFileList, 'Spalte für das Erstellungsdatum eingefügt')

; Array sortieren auf Spalte 1 (Erstellungsdatum, neueste Datei zuerst) :
_ArraySort($aFileList, 1, 1, 0, 1)

; nur zur Anzeige : sortiertes Array
_ArrayDisplay($aFileList)

; Ab hier beginnt das Löschen der Dateien :
; - Die 5 neuesten Dateien (siehe $iKeepFiles) behalten -> Rest löschen
; - Sicherstellen, dass das richtige Verzeichnis angegeben wurde
;   -> NIEMALS auf wichtige Verzeichnisse anwenden, also VORSICHT !!!
; - einige Dateiattribute können das Löschen verhindern
ConsoleWrite('> Anzahl Dateien = ' & $aFileList[0][0] & @CRLF)
ConsoleWrite('> Die ' & $iKeepFiles & ' neuesten Dateien werden nicht gelöscht' & @CRLF & @CRLF)

; Sicherheitsabfrage (kann nach dem Testen entfernt werden) :
If MsgBox(BitOR($MB_YESNO, $MB_ICONQUESTION), 'Frage : ', 'Dateien in ' & $sFilePath & ' wirklich löschen ?' & @CRLF) = $IDNO Then Exit

; Löschen der Dateien :
If $aFileList[0][0] > $iKeepFiles Then
    For $i = ($iKeepFiles + 1) To $aFileList[0][0] Step 1
		If FileDelete($aFileList[$i][0]) Then
			ConsoleWrite('- Datei = ' & $aFileList[$i][0] & ' wurde erfolgreich gelöscht' & @CRLF)
		Else
			ConsoleWrite('- Datei = ' & $aFileList[$i][0] & ' konnte nicht gelöscht werden' & @CRLF)
		EndIf
	Next
EndIf