Verzeichnis (mit Inhalt) löschen
-
Hallo
Habe schon die Suchen-Funktion benutzt und in der FAQ geschaut, doch nichts gefunden, das ich brauchen könnte...
Ich will ein Verzeichnis löschen, welches Dateien und Unterverzeichnisse enthält. Mit der Funktion "RemoveDir" kann man ja nur leere Verzeichnisse löschen.
Die einzige Idee die mir in den Sinn kam ist folgende:
Mit "FindFirst" bzw. "FindNext" alle Dateien und Unterverzeichnisse in dem bestimmten Verzeichnis aufspüren und danach mit "DeleteFile" löschen und anschliessend das leere Verzeichnis mit "RemoveDir" löschen.
Ich würde gerne wissen ob es nicht eine einfachere Methode dazu gibt ? Gibt es keinen Befehl mit dem man ein Verzeichnis samt Inhalt löschen kann ?
-
Du könntest vielleicht SHFileOperation dafür verwenden.
-
Vielen Dank Braunstein
Doch irgendwie bringe ich es nicht fertig, ein Verzeichnis zu löschen... Bei untenstehendem Code bekomme ich die Fehlermeldung:
Fehler beim Löschen der Datei oder des Ordners
---------------------------
Datei kann nicht gelöscht werden: Die Quelldatei oder vom Quelldatenträger kann nicht gelesen werden.Mein Code:
_SHFILEOPSTRUCTA test; test.hwnd = NULL; test.wFunc = FO_DELETE; test.pFrom = "C:\\Test"; test.pTo = NULL; test.fFlags = NULL; SHFileOperation(&test);Kannst du mir sagen was ich alles falsch mache ?
-
msdn schrieb:
pFrom
Address of a buffer to specify one or more source file names. These names must be fully qualified paths. Standard Microsoft MS-DOS wild cards, such as "*", are permitted in the file-name position. Although this member is declared as a null-terminated string, it is used as a buffer to hold multiple file names. Each file name must be terminated by a single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.Dokumentation komplett lesen hilft oft weiter (o;
-junix
-
Sorry, aber ich bin beim Programmieren noch ein ziemlicher Anfänger, was du wohl spätestens durch diesen Post auch feststellst

kannst es mir vielleicht etwas genauer erklären ? bzw. was ist ein "NULL character" ??
Danke !
-
Oder kannst du ein Beispiel machen ?
-
In C wird jeder String wird durch ein Byte mit dem ASCII-Wert 0 abgeschlossen. Du hast nun in dieser Struktur die Möglichkeit, mehrere Dateien zu übergeben. Das passiert, indem du die einzelnen Dateien durch ein Nullzeichen trennst.
Also z.B. "C:\\foo\0C:\\bar". Damit nun aber das Ende der Liste erkannt wird, muss auf das abschliessende 0 noch ein weiteres folgen:
"C:\Test\0" (Und hinter diesem 0 steht dann im Speicher noch das 0 das der Compiler selber an den String anfügt.)-junix
-
ok, jetzt ist alles klar, vielen Dank
