Seite 1 von 1

Suche (schnelles) Dateidatum

Verfasst: 13.09.2005 09:56
von Agent
Hallo Community.

Ich bin auf der suche nach einer schnellen Möglichkeit das Dateidatum (bzw. timestamp) zu ermitteln. Bisher habe ich diese Routine benutzt

Code: Alles auswählen

Procedure GetFileDate(file$); - Get the time of a File 
  handle=CreateFile_(@file$,#GENERIC_READ,#FILE_SHARE_READ|#FILE_SHARE_WRITE,0,#OPEN_EXISTING,#FILE_ATTRIBUTE_NORMAL,0) 
  If handle<>#INVALID_HANDLE_VALUE 
    GetFileTime_(handle,0,0,FT.FILETIME) 
    ;Result=FileTimeToDate(FT) 
    CloseHandle_(handle) 
    FileTimeToLocalFileTime_(FT.FILETIME,FT2.FILETIME) 
    FileTimeToSystemTime_(FT2,st.SYSTEMTIME) 
    ProcedureReturn Date(st\wYear,st\wMonth,st\wDay,st\wHour,st\wMinute,st\wSecond)
  Else
    ProcedureReturn 0
  EndIf
EndProcedure 
Sie stammt aus dem Forum bzw. Code-Archiv (bin mir nicht mehr sicher). Leider ist sie recht langsam - zumindest wenn man mal die ganze Festplatte einlesen lässt....
Beispiel: Scan C:
Über die Readdir() - Funktion (CodeArchiv), Nur Name und Größe eingelesen:

ca. 55000 Dateien: 850 ms
zusätzlich Dateidatum über obige Proc: ...abgebrochen nach 30 Sekunden...

Jemand dafür eine Lösung?
ein DirectoryEntrySize und DirectoryEntryAttribute gibts, aber ein DirectoryEntryDate nicht (laut Help) :(

Re: Suche (schnelles) Dateidatum

Verfasst: 13.09.2005 17:48
von horst
Schau dir mal mein Proggi DelAge32 an (auf meiner Homepage, Windows Abteilung, Command Tools). Source ist dabei.

Das Tool löscht oder verschiebt Dateien (auch in Unterverzeichnissen), und zwar wenn ein bestimmtes Alter (in Tagen) erreicht oder überschritten wird.

Ich verwende dabei die API-Suchfunktionen, weil man da auch Zugriff auf das File-Datum hat (wird bei PB nicht unterstützt, weil 64 bit).

Wenn noch Fragen, email ...