Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 :-)

Geschrieben

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!

Geschrieben

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.

Geschrieben

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!

Geschrieben

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]

Geschrieben

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?

Geschrieben
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

Geschrieben
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*

Geschrieben
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 :)

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...