c'est une fonction recursive qui parcours le répertoire et TOUS les sous-repertoires et stock tous les fichiers d'un meme type
mon code parcours une arborescence COMPLETE a partir d'un répertoire designé puis il recherche et ecrit dans un fichier ce qu'il a trouvé.
cet exemple est en rapport avec mon projet mais il est possible de modifier le type de fichier (ex:".exe", "*.txt"...) et ce que le fichier doit ecrire
PS: c'est une appli MFCAppWizard (cf: AfxMessageBox...)
Source / Exemple :
int CBatch::Cherch_Fic_Rep(CString rep, CString nom)
{
rep = rep + "\\";
CString sous_repertoire = "";
CString fichier = "";
FILE * file;
// attribut d'ecriture en "a" car on ecrit plusieurs fois dans le fichier (à la suite)
file = fopen(nom,"a");
HANDLE hfind;
WIN32_FIND_DATA wfd;
hfind = FindFirstFile (rep + "*.*", &wfd );
if ( hfind != INVALID_HANDLE_VALUE )
{
do
{
// vérifie que ce n'est pas le répertoire racine
if( wfd.cFileName[0] != '.')
{
// vérifie si c'est un répertoire ou non
if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
// répertoire
sous_repertoire = rep + wfd.cFileName;
Cherch_Fic_Rep(sous_repertoire, nom);
}
else
{
// fichier
fichier = "CALL " + rep + wfd.cFileName;
// recherche de "." et positionnement dessus
fichier.Find(".");
// renvoi l'extension des fichiers
CString ext = fichier.Right(3);
// ecriture uniquement si ext = ".bat"
if (ext == "bat")
{
fichier += "\n";
if (file != NULL) fprintf (file,"%s",fichier);
else AfxMessageBox("Impossible d'ecrire le fichier");
}
else continue;
}
}
}
// suite de la recherche
while(FindNextFile( hfind, &wfd));
// recherche terminé
FindClose(hfind);
fclose(file);
}
return 0;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.