#include <File.au3>
#include <MsgBoxConstants.au3>

Global $sFilePath = @ScriptDir  ; Hier den kompletten Pfad zum Basisverzeichnis eintragen
Global $sLatestFile


$sLatestFile = _FindLatestModifiedFile($sFilePath)
If @error Then
	; Fehler 1 = Verzeichnis existiert nicht
	; Fehler 2 = Verzeichnis ist leer
	; Fehler 3 = Dateidatum kann nicht ermittelt werden
	MsgBox($MB_SYSTEMMODAL, "Fehler", "Es ist ein Fehler aufgetreten : " & @error & @CRLF)
	Exit
Else
	MsgBox($MB_SYSTEMMODAL, "Datei gefunden", "Neueste Datei = " & $sLatestFile & @CRLF)
EndIf


; Funktionsbeschreibung :
; Findet die neueste Datei (nach Änderungsdatum) im angegebenen Verzeichnis.
;   Parameter : $sBaseDir = Pfad zum Basisverzeichnis
Func _FindLatestModifiedFile($sBaseDir)
	Local $hSearch, $sFile, $sFileTime
	Local $aLatestFile[2] = [0, ""] ; [0]=Änderungsdatum / [1]=Dateiname

	If StringRight($sBaseDir, 1) <> '\' Then $sBaseDir &= '\'
	If Not FileExists($sBaseDir) Then Return SetError(1, 0)

	$hSearch = FileFindFirstFile($sBaseDir & '*.*')
    If $hSearch = -1 Then Return SetError(2, @error)

	While 1
		$sFile = FileFindNextFile($hSearch)
		If @error Then ExitLoop

		$sFileTime = FileGetTime($sBaseDir & $sFile, $FT_MODIFIED, $FT_STRING)
		If $sFileTime > $aLatestFile[0] Then
			$aLatestFile[0] = $sFileTime
			$aLatestFile[1] = $sBaseDir & $sFile
		EndIf
	WEnd

	FileClose($hSearch)  ; Dateihandle schließen

	If $aLatestFile[0] = 0 Then
		Return SetError(3, 0)
	Else
		Return $aLatestFile[1]
	EndIf
EndFunc   ;==> _FindLastModifiedFile