Hi,
ich habe folgende Methode geschrieben, die alle Dateien/Ordner in einem bestimmten Verzeichnis (d) löschen soll, die nicht im Ordner “s” vorhanden sind. Funktioniert auch soweit ganz gut, nur die leeren Verzeichnisse werden nicht gelöscht. Weiß jemand warum?
HWND handle;
WIN32_FIND_DATA wfd;
char dir[strlen(d) + 2];
strcpy(dir, d);
strcat(dir, "\\*");
handle = FindFirstFile(dir, &wfd); // . => ignore
FindNextFile(handle, &wfd); // .. => ignore
while (FindNextFile(handle, &wfd)) { // Delete Removed Files
char sc[strlen(s) + strlen(wfd.cFileName) + 1];
strcpy(sc, s);
strcat(sc, "\\");
strcat(sc, wfd.cFileName);
char di[strlen(d) + strlen(wfd.cFileName) + 1];
strcpy(di, d);
strcat(di, "\\");
strcat(di, wfd.cFileName);
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
deleteDir(sc, di);
if (FindFirstFile(sc, &wfd) == INVALID_HANDLE_VALUE) {
RemoveDirectory(di);
}
}
else {
if (FindFirstFile(sc, &wfd) == INVALID_HANDLE_VALUE) {
DeleteFile(di);
}
}
}
}```
Danke!