![]() |
Dateien datumsabhängig kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich habe mir aus verschiedenen Quellen ein Programm zusammengestellt, dass ein Verzeichnis inkl. der Unterverzeichnisse nach Dateien durchsucht, die neuer sind, als ein vorgegebenes Datum. Neuere Dateien werden in einen vorgegebenen anderen Bereich (mit gleicher Verzeichnisstruktur wie im Original) kopiert. Die Dateien werden anschließend auf DVDs gebrannt und dann wieder gelöscht. Das Programm scheint auch zu funktionieren, aber wenn der zu durchsuchende Bereich "etwas" größer wird, dann bringt das Programm den PC fast zum erliegen und ich habe das Gefühl (ich habe insgesamt nur etwa 450 GB Daten auf DVDs), dass es irgendwann abbricht. "Etwas" größer heißt: 632 GB (wirklich GB) Größe, 20.443.043 Dateien in 210.219 Ordnern. Ich habe den kompletten Quellcode in einem ZIP beigefügt, da könnt Ihr vielleicht mal reinsehen, vielleicht fällt Euch etwas auf, oder Ihr kennt bessere Möglichkeiten? Ach ja, ich verwende Delphi 7 Professional. Danke. Gruß Franz |
Re: Dateien datumsabhängig kopieren
Hallo,
auf die Schnelle kann ich im Quelltext nix entdecken, was sich als arge Bremse auswirken könnte. Mach Dir auf das Formular mal noch 'ne Statusbar als SimplePanel und weise dann SimpleText am Anfang von GetAllFiles mask zu, dahinter noch ein Application.ProcessMessages, dann kannst Du sehen, wielange ungefähr für 'ne Datei gebraucht wird. Bei der riesigen Datenmenge kann das Auflisten der Dateien auch im Explorer... schon mal 'ne Weile dauern. Eventuell ergänzt Du Dir das
Delphi-Quellcode:
noch um den Namen der Datei, bei der der Fehler auftritt.
showmessage('Beim Kopieren der letzten Datei ist ein Fehler aufgetreten. Der Vorgang wird abgebrochen.');
Hinter dem Showmessage verlässt Du die Routine mit Exit, d. h.: FindClose wird nicht aufgerufen. Da fällt mir auf: Für das erste FindFirst fehlt das FindClose, dass könnte durchaus Auswirkungen haben, beobachte mal im Taskmanager, wie sich der Speicherverbrauch (incl. Handles, Threads...) während des Programmlaufes verhält, wächst da irgendwas permanent, wenn auch wenig an? |
Re: Dateien datumsabhängig kopieren
Hallo Stephan,
die Zeit, bis der Durchlauf abgeschlossen wird, ist nicht relevant. Meinetwegen soll das Programm zwei Tage laufen, das ist egal, wenn es funktioniert. Dass der PC lahmgelegt wird, könnte tatsächlich am fehlenden FindClose liegen. Wie gesagt habe ich einfach ein paar Routinen aus dem Netz gezogen (gut dass das möglich ist) und mir zusammengestrickt. Ich hoffe halt nur, dass diese Routine ansonsten korrekt ist und nicht irgendwelche Dateien ausläßt. In der Anzeige der durchsuchten Dateien sind wesentlich weniger Dateien aufgeführt, als tatsächlich zu durchsuchen sind. Ich werde das jetzt nach der Änderung (zwei weitere FindClose) noch mal testen. Ein Abbruch, der die Message ausgelöst hätte, ist zum Glück noch nicht vorgekommen, sollte auch nicht möglich sein, da die USB Festplatte, die ich nutze nur lokal zugreifbar ist. Ich werde die Message aber erweitern. Danke für die Tipps, ich melde mich, wenn der Lauf durch ist. Danke. Gruß Franz |
Re: Dateien datumsabhängig kopieren
Hallo,
dann schau Dir doch mal den Thread an ![]() |
Re: Dateien datumsabhängig kopieren
Entschuldigung dass ich off topic werde, aber würde xcopy nicht für deine Zwecke reichen?
Code:
Das kopiert zum Beispiel sämtliche Dateien inklusive Unterverzeichnisse, die am 01.01.2009 oder später modifiziert worden sind.
S:\> xcopy workspace\delphi backup\delphi /D:01-01-2009 /E /Y
Keine Ahnung, wie sich das mit 600+ GByte Daten verhält. Du kannst dafür aber (ziemlich) sicher sein, dass keine unvorhergesehenen Bugs auftauchen. Gruß, lincore |
Re: Dateien datumsabhängig kopieren
Hallo!
An Stephan: Besten Dank für Deine Hilfe. Bis jetzt (Beginn etwa um 16:30 Uhr) sind etwa die Hälfte der Files überprüft worden. Der PC läuft ruhig vor sich hin, es sind keine besonderen Verzögerungen festzustellen. Es scheint etwas langsamer geworden zu sein, aber das spielt keine Rolle. An lincore: Ich werde das sofort ausprobieren, wenn mein Programm durchgelaufen ist. Wenn das klappt, dann habe ich nur noch eins zu tun: :wall: :wall: :wall: Den Parameter D kannte ich nicht. Deswegen bin ich überhaupt nicht auf die Idee gekommen, xcopy zu verwenden. Ich melde mich, wenn ich fertig bin (inkl. Mauer). Gruß und einen schönen Feierabend Franz |
Re: Dateien datumsabhängig kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mir auch mal so ein Progamm geschrieben - Allerdings habe ich keine Probleme mit der Geschwindigkeit. Vielleicht schaust du dir den Sourcecode mal an und findest irgendetwas, das ich anders mache. |
Re: Dateien datumsabhängig kopieren
Hallo zusammen!
An Stephan: Das Programm ist problemlos durchgelaufen. Es hat zwar fast 10 Stunden gebraucht, aber das spielt keine Rolle. Danke für die Mühe. An lincore: Ich habe - wie angekündigt - die nächstliegende Wand intensiv genutzt. Das gleiche Ergebnis habe ich mit xcopy in etwa 4,5 Stunden erzielt. Danke. An Andreas: Danke für den Code. Die Geschwindigkeit ist nicht maßgeblich. Du benutzt TFileStream, ich nehme einfach copyfile. Daran könnte der Geschwindigkeitsunterschied vielleicht liegen, keine Ahnung. Vielleicht baue ich das mal in mein Programm ein. Gruß Franz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz