given_to_fly Geschrieben 15. August 2004 Geschrieben 15. August 2004 Hallo, gibt es eine Methode die mir alle Dateien auflistet bzw. löscht die älter als ein bestimmter Zeitpunkt sind ? Ich will zum Beispiel einen Ordner nach Dateien durchsuchen die älter als 5 Tage sind und das diese dann gelöscht werden. Gibt es sowas? Wäre super! Danke :-) Zitieren
Klotzkopp Geschrieben 16. August 2004 Geschrieben 16. August 2004 Gibt es sowas? Nicht fertig. Du musst die drei Schritte einzeln durchführen: 1. Dateien suchen (CFileFind) 2. Filtern (GetFileTime) 3. Löschen (CFile::Remove) P.S.: Verschoben nach C++: Compiler, IDEs, APIs Zitieren
given_to_fly Geschrieben 16. August 2004 Autor Geschrieben 16. August 2004 Hallo. Hat soweit funktioniert bis auf die GetFileTime. Kann ich in der Funktion gleich mitgeben in welchen Zeitformat er es mir anzeigen soll? oder wie kann ich abfragen ob die Datei älter als 3 Tage ist? Hab da so meine Probleme mit der Zeitformatkonvertierung Kannst du mir da nochmal helfen? Danke! Zitieren
Klotzkopp Geschrieben 16. August 2004 Geschrieben 16. August 2004 Kann ich in der Funktion gleich mitgeben in welchen Zeitformat er es mir anzeigen soll?Mit "Anzeigen" hat das gar nichts zu tun. GetFileTime erwartet einen Zeiger auf eine FILETIME Struktur. oder wie kann ich abfragen ob die Datei älter als 3 Tage ist? Aus einer FILETIME Struktur kannst du dir eine Instanz von CTime bauen. Mit CTime::GetCurrentTime bekommst du die aktuelle Zeit. Wenn du zwei CTime-Instanzen voneinander abziehst, bekommst du ein CTimeSpan-Objekt, das die Dauer zwischen den beiden Zeiten enthält. Mit CTimeSpan::GetDays erhältst du schließlich die Anzahl der vollständigen Tage. Zitieren
given_to_fly Geschrieben 16. August 2004 Autor Geschrieben 16. August 2004 Hi ok soweit verstanden danke Die Methode GetFileTime verlangt einen filehandle. Wie kann ich einen filehandle aus einem Pfad zur Datei erzeugen? Ich habe bisher nur den Dateinamen in einem CString .. Zitieren
Klotzkopp Geschrieben 16. August 2004 Geschrieben 16. August 2004 Wie kann ich einen filehandle aus einem Pfad zur Datei erzeugen? CreateFile Zitieren
given_to_fly Geschrieben 16. August 2004 Autor Geschrieben 16. August 2004 Ich glaub ich bin zu bescheuert: FILETIME ftCreate, ftAccess, ftWrite, ftDiff; HANDLE fhandle; CTime ftActual; fhandle = CreateFile(cst_file, GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); GetFileTime(fhandle, &ftCreate, &ftAccess, &ftWrite); ftActual = CTime::GetCurrentTime(); ftDiff = ftActual - ftCreate.dwHighDateTime; error C2593: 'Operator -' ist mehrdeutig Fehler beim Ausführen von cl.exe. Ich weiss die Strukturen sehen anders aus aber wie bekomme ich diese einheitlich? Kannst du mir mal ein Beispielcoding geben, meine MSDN ist auch nicht vollständig installier von daher habe ich da auch probleme beispiele anzusehen! Zitieren
Klotzkopp Geschrieben 16. August 2004 Geschrieben 16. August 2004 FILETIME ftCreate = {0}; HANDLE fhandle = CreateFile( // usw. GetFileTime(fhandle, &ftCreate, 0, 0); CTime actual = CTime::GetCurrentTime(); CTime create(ftCreate); CTimeSpan diff = actual - create; LONGLONG days = diff.GetDays(); [/code] Zitieren
given_to_fly Geschrieben 16. August 2004 Autor Geschrieben 16. August 2004 FILETIME ftCreate = {0}; HANDLE fhandle = CreateFile( // usw. GetFileTime(fhandle, &ftCreate, 0, 0); CTime actual = CTime::GetCurrentTime(); CTime create(ftCreate); CTimeSpan diff = actual - create; LONGLONG days = diff.GetDays(); Hi, Hier hat er aber immer in days den Wert 0 ... das kann aber nicht sein da z.B. ein File am 11.08.04 erstellt wurde.. actual = {time=1092646920} create = {time=1092639385} diff = {time=???} hmm?? was ist noch falsch? Zitieren
Goos Geschrieben 16. August 2004 Geschrieben 16. August 2004 Hi, Hier hat er aber immer in days den Wert 0 ... das kann aber nicht sein da z.B. ein File am 11.08.04 erstellt wurde.. actual = {time=1092646920} create = {time=1092639385} diff = {time=???} hmm?? was ist noch falsch? Das einzige was daran falsch ist, ist dass du sagst eines der Daten waere 11.08.04 Es ist beides der 16. Goos Zitieren
given_to_fly Geschrieben 16. August 2004 Autor Geschrieben 16. August 2004 Das einzige was daran falsch ist, ist dass du sagst eines der Daten waere 11.08.04 Es ist beides der 16. Goos aber ich habe das file am 11.08 erzeugt *grml* bzw. es wurde von einem anderne programm erzeugt.. edit: **ARGS ich habe den Fehler gefunden :-( Kagg Methode... er hat immer das gleiche file eingelesen und die datei die er hatte war immer von heute *grml* Zitieren
Goos Geschrieben 16. August 2004 Geschrieben 16. August 2004 aber ich habe das file am 11.08 erzeugt *grml* bzw. es wurde von einem anderne programm erzeugt.. Dann passt wahrscheinlich dein fhandle = CreateFile(cst_file, GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FI LE_ATTRIBUTE_NORMAL,NULL); nicht so recht und du schaust aufs falsche File Du kannst dein Datum ja testhalber auch mal Formatieren und siehst so wenigstens, ob du ueberhaupt das richtige bekommst. Ein Beispiel dafuer waere: CString s = a.Format( "%d, %B %Y %H:%M" ); Goos edit: ...na gut, dann hat sich ja alles erledigt Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.