Hallo erstmal,
ich habe folgendes Problem und finde im Moment keine passende Lösung dazu.
Ich lasse vom Nutzer einen Ordnerpfad angeben indem dann nach bestimmten Dateien gesucht werden soll. Soweit alles in Ordnung. Nun kann dieser Ordner mehrere Unterordner haben und die Unterordner selber auch noch. Wie kann ich meinen Code so abändern, das mein Programm später wirklich alle Ordner durchläuft?
Mit folgendem Code hatte ich es mit einem return zum Selbstaufruf in der Schleife versucht, aber der scannt nur den zuerst gefundenen Ordner. Ausserhalb der Schleife hatte ich es auch nochmal versucht gehabt mit einem return die Funktion sich selbst aufrufen zu lassen. Hier war der Effekt anders rum. Das Programm durchläuft nun den zuletzt gefundenen Ordner.
Im Moment sehe ich keine Chance meine Blockade zu durchbrechen. Ich habe den Code auf den mir wichtigen Teil gekürzt. Ich hoffe mir kann da jemand weiter helfen.
ich habe folgendes Problem und finde im Moment keine passende Lösung dazu.
Ich lasse vom Nutzer einen Ordnerpfad angeben indem dann nach bestimmten Dateien gesucht werden soll. Soweit alles in Ordnung. Nun kann dieser Ordner mehrere Unterordner haben und die Unterordner selber auch noch. Wie kann ich meinen Code so abändern, das mein Programm später wirklich alle Ordner durchläuft?
Mit folgendem Code hatte ich es mit einem return zum Selbstaufruf in der Schleife versucht, aber der scannt nur den zuerst gefundenen Ordner. Ausserhalb der Schleife hatte ich es auch nochmal versucht gehabt mit einem return die Funktion sich selbst aufrufen zu lassen. Hier war der Effekt anders rum. Das Programm durchläuft nun den zuletzt gefundenen Ordner.
Im Moment sehe ich keine Chance meine Blockade zu durchbrechen. Ich habe den Code auf den mir wichtigen Teil gekürzt. Ich hoffe mir kann da jemand weiter helfen.
Code:
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int j = 0;
char paths[200];
int files(char Eingabe[])
{
char *pfad;
char *path;
char wert2[500];
char pfad2[200];
HANDLE fHandle;
WIN32_FIND_DATA wfd;
fHandle=FindFirstFile(Eingabe,&wfd);
pfad = strtok(Eingabe, "*");
strcpy(pfad2, pfad);
do
{
if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
{
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //wenn das Gefundene ein Ordner ist
{
MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
if(pfad != "*" || pfad != " ")
{
strcpy(Eingabe, pfad2);
strcat(Eingabe, wfd.cFileName);
strcat(Eingabe, "\\*");
strcat(paths, Eingabe);
strcat(paths, "#");
return (files(Eingabe)); //so geht er in den zuerst gefundenen Unterordner
}
}
else
{
MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
}
}
}while (FindNextFile(fHandle,&wfd));
//return (files(Eingabe));
getchar();
FindClose(fHandle);
}
int main()
{
char *ptr;
char *pfad;
string wert = "";
//char wert2[500];
string werte = "";
char Eingabe[500];
printf("\nBitte den Pfad zum Ordner eingeben!\nEingabe: ");
scanf("%s",Eingabe); //Eingabe des Pfades, wo sich der gewünschte Ordner befindet
if(j == 0)
{
strcpy(paths, "");
j++;
}
strcat(Eingabe, "*");
files(Eingabe);
return 0;
}