Den "dir"-Befehl nachcoden
-
Hiho ich hab folgendes Prob:
Ich möchte alle Ordner auf dem PC auflisten lassen.
Mit FindFirstFile und FindNexFile klappt es, aber nur die ersten Verzeichnisse.
Ich weiß dass man das Problem mit Rekursion lösen kann, aber ich komm nich mit den Typen klar da bisjetzt jeder Versuch der Rekursion immer an einer invalid conversion geendet hat.Weiß jemand wie ich das anstellen muss?
Ich komm einfach nich drauf und ich mach mir jetzt schon 2 Tage meine Nerven dran kapott.Hier is ma der Source wie ich die Verzeichnisse auf C: aufliste:
#include <cstdlib> #include <iostream> #include <windows.h> using namespace std; HANDLE fHandle; WIN32_FIND_DATA data; int search(char); int search(char* dirz) { fHandle=FindFirstFile(dirz,&data); while(FindNextFile(fHandle,&data)) { if (!( (data.cFileName[0]=='.') && ( (data.cFileName[1]=='.' && data.cFileName[2]==0) || data.cFileName[1]==0 ) )) { if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { dirz = data.cFileName; cout << dirz << endl; } } } FindClose(fHandle); } int main() { search("C:\\*"); system("PAUSE"); return EXIT_SUCCESS;
Danke im Vorraus
-
Naja, wenn du C: damit auslesen kannst, hab mir den Code jetzt net genauer angeguggt, dann musst du die gefunden Elemente prüfen welches davon ein Verzeichniss ist, dieses gibst du dann analog zu "C:\*" als Suchverzeichniss ein und arbeitest dich da mal runter in die Tiefen, ist dann schon ein bisserl Arbeit und net mit 10 Zeilen Code getan.
ANSI Hansi
-
fHandle=FindFirstFile(dirz,&data); // <- so überschreibt FindNextFile das was FindFirstFile gefunden hat while(FindNextFile(fHandle,&data)) { ... } //============================================ fHandle=FindFirstFile(dirz,&data); // <- ev. so hier do { ... } while(FindNextFile(fHandle,&data));
Im WinAPI-Forum weiter oben gibt es einige Beispiele zu FindFirstFile/FindNextFile.
-
Danke schonmal für die Antworten
Ich gugg mich mal im WinAPI Forum um.