Hallo,
ich versuche gerade ein Such Programm zu schreiben das nach Dateien such soll, ich mache das ganze mit FindFirstFileEx() und FindNextFile(). Bisher habe ich es erfolgreich geschafft einen Ordner zu durchsuchen und Dateien und Ordner zu unterscheiden, jetzt möchte ich aber auch das mein Programm alle Unterordner mit durchsucht, also habe ich es so gemacht, dass wenn er einen Ordner gefunden hat, die suchfunktion nochmal aufruft mit dem neuen Ordner und diesen dann durchsucht, jedoch springt er immer wieder in den Ursprungsordner zurück und es gibt dann nach einiger Zeit einen Fehler von Windows.
also ich hab schon versucht das Problem zu lösen, jedoch ohne erfolg
Ich hoffe ihr könnt mir weiterhelfen.
Gruß
cesupa
ich versuche gerade ein Such Programm zu schreiben das nach Dateien such soll, ich mache das ganze mit FindFirstFileEx() und FindNextFile(). Bisher habe ich es erfolgreich geschafft einen Ordner zu durchsuchen und Dateien und Ordner zu unterscheiden, jetzt möchte ich aber auch das mein Programm alle Unterordner mit durchsucht, also habe ich es so gemacht, dass wenn er einen Ordner gefunden hat, die suchfunktion nochmal aufruft mit dem neuen Ordner und diesen dann durchsucht, jedoch springt er immer wieder in den Ursprungsordner zurück und es gibt dann nach einiger Zeit einen Fehler von Windows.
Code:
int search_file(char pfad[256],char name[256])
{
char searchpath[256];
char newsearchpath[256];
WIN32_FIND_DATA wfd;
strcpy(searchpath,pfad);
strcat(searchpath,name); //Suchpfad zusammensetzen
cout<<"Durchsuche: "<<searchpath<<endl<<endl;
HANDLE hSearch = FindFirstFileEx((searchpath), FindExInfoStandard, &wfd, FindExSearchLimitToDirectories,NULL,FIND_FIRST_EX_CASE_SENSITIVE); //Erste Datei finden
cout<<wfd.cFileName<<endl; //und ausgeben
while(FindNextFile(hSearch,&wfd)) //Nächste Dateien finden
{
if(wfd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) //Ist die gefundene Datei ein Ordner ?
{
cout<<wfd.cFileName<<" <dir> "<<endl;
Sleep(2000); //abwarten damit ich sehe was passiert ;-)
if((wfd.cFileName!=".")&&(wfd.cFileName!="..")) //hier möchte ich verhindern das er in den Ursprungsordner zurückkehrt, jedoch ohne erfolg
{
strcpy(newsearchpath,pfad);
strcat(newsearchpath,wfd.cFileName);
strcat(newsearchpath,"\\"); //neuen suchpfad zusammenstellen mit neuem Ordner
search_file(newsearchpath,name); //Funktion mit neuem suchpfad aufrufen
}
}
else
{
cout<<wfd.cFileName<<endl; //wenn Datei kein Ordner, trotzdem anzeigen
}
}
}
also ich hab schon versucht das Problem zu lösen, jedoch ohne erfolg

Ich hoffe ihr könnt mir weiterhelfen.
Gruß
cesupa