Rechercher un type de fichier dans toute une arborescence

Contenu du snippet

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;
}

A voir également

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.