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 :-)
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
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!
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.
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 ..
Klotzkopp Geschrieben 16. August 2004 Geschrieben 16. August 2004 Wie kann ich einen filehandle aus einem Pfad zur Datei erzeugen? CreateFile
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!
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]
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?
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
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*
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden