![]() |
Dateien in einem Verzeichnis löschen ohne den Ordner selber
Hallo,
ich suche eine Möglichkeit, schnell alle Dateien in einem Verzeichnis zu löschen, auch Unterverzeichnisse ohne das eigentliche Verzeichnis mit zu löschen. Ich habe mir gedacht zunächst alle Dateien mit FindFirst/FindNext aufzulisten und diese dann zu löschen. Dieser Vorgang dauert aber auch seine gewissen Zeit. Zudem würde ich das gerne mit einem Fortschrittsbalken verbinden. Das Problem ist also eine schnelle Möglichkeit zu finden. :wink: Hat jemand eine Idee? Gruß Mazel |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
mit
![]() Danach kannst du ja wieder den Ordner erstellen. |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Diese Lösung habe ich mir auch schon angeschaut würde ich auch verwenden, aber ich frage ja nicht umsonst nach einer Möglichkeit nur den Inhalt zu löschen, denn wenn ich einen tragbaren Player angeschlossen habe, bei dem ich den Inhalt in H:\ löschen möchte, kann ich nicht H:\ neu anlegen bzw. die gezeigte Routine läuft dann leider nicht weil sie ja H:\ auch löschen möchte.
|
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
die Funktion akzeptiert auch mehrere Dateien und Ordner. Du musst also nur die Unterobjekte dort übergeben, welches mit FindFirstFile schnell geht.
|
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
In dem Verzeichnis sind aber nicht nur Unterordner sondern möglichwerweise auch mehrere 100 anderer Dateien. Da muss ich ja H:\ angeben und das geht leider nicht.
|
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
du zählst die Dateien und Ordner von H: mit FindFirst auf. Das geht sehr schnell, selbst bei 100 Dateien und mehr.
Dann kannst du diese Dateinamen der Funktion übergeben, indem du einen entsprechend großen Speicherbereich erstellst und dort die Datei/Ordnerpfade (h:\XY) reinkopierst und mit #0 trennst, bzw. mit #0#0 abschliest. |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Hallo Marcel,
hast du es mit Wildcard-Angabe versucht?
Delphi-Quellcode:
Gruß Hawkeye
var
Info : TSHFileOpStruct; begin FillChar (Info, SizeOf(Info), 0); Info.wFunc := FO_DELETE; Info.pFrom := 'd:\YourFolder\*'#0; Info.pTo := nil; SHFileOperation(Info); end; |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Zitat:
Wieder mal nicht auf das einfachste gekommen ;) [Edit] Was ist eigentlich mit #0 gemeint? [/Edit] Danke Gruß Mazel |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Zitat:
Gruß Hawkeye |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
OK,
danke für die Info. :thumb: Gruß Mazel |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
// EDIT:
Oje, habe irgendwie Deinen Thread nur zur Hälfte gelesen, also vergiß meine Antwort einfach - du hast das ganze ja schon probiert. Wobei mich es ehrlich gesagt wundert, daß es bei Dir so lange dauert. Wie viele Dateien hast Du denn zu löschen? Also bei mir geht es auch mit 1.000 Dateien relativ schnell - eine Sekunde hin oder her dürfte doch (im Normalfall) keine Rolle spielen, oder?!? Eventuell lässt sich Deine Routine ja optimieren... Was den Fortschrittsbalken angeht: Ich zähle die Dateien vorher über eine ganz simpel gehaltene FindFirst/FindNext-Funktion. Bei meiner "C:"-Systemplatte dauert das Zählen ungefähr 3(!) Sekunden und es sind WESENTLICH(!) mehr als 1000 Dateien.... :gruebel: SCRaT ================================================== ================================================== Was würde denn dagegensprechen über eine rekursive FindFirst..FindNext - Funktion die Dateinamen zu bekommen und diese dann jeweils gleich zu löschen? (zich Threads dazu sind hier schon im Forum...). Das wäre für mich jedenfalls die einfachste Version. Dann würde sich das erstellen der Verzeichnis auch erledigen. SCRaT |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Gut ich habe mir keine Gedanken darüber gemacht das das wahrscheinlich relativ kurz sein wird, ok.
Rekursiv suchen und gleich löschen mit FindFirst/FindNext, davon wird abgeraten so dstd.info: ![]() |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Hmmm... Also bei hat damit bisher alles geklappt. Man könnte ja auch einfach alle Dateien in eine StringList schreiben und diese eingefügte Dateien dann danach löschen. Aber ok, Du hast ja jetzt bereits schon eine gute Lösung gefunden. :cheers:
SCRaT |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Naja, so halb gut ist sie ;), da sie nicht ganz zu meinem Schema passt was den Fortschritsbalken angeht. Wenn ich es hinbekomme, werde ich wohl alle Dateien in eine Stringlist auflisten und dann der Reihe nach löschen damit ich meinen eigenen Balken verwenden kann, wenn nicht lass ich es so.
|
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Zitat:
![]() SCRaT |
Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel
Danke,
ich schau mir das mal an. :) Eventuell lässt sich da was verwenden und bei mir einbauen. :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 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