Récursive *.bak [Résolu]

bibi262 9 Messages postés vendredi 14 janvier 2005Date d'inscription 4 décembre 2006 Dernière intervention - 8 oct. 2006 à 17:06 - Dernière réponse : elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention
- 13 oct. 2006 à 11:17
Bonjour,

Je cherchais depuis un bout comment faire pour supprimer les fichiers qui sont dans les sous-dossiers, j'ai finit par trouver un code qui marche superbement bien :

procedure Scan( NomDossier : string );
var
 hFound : Integer;
 sFileData : TSearchRec;
begin
 NomDossier := IncludeTrailingPathDelimiter( NomDossier );
 hFound := FindFirst( NomDossier + '*.*', faAnyFile, sFileData);
 if ( hFound = 0 ) then
 begin
  repeat
  if ( ( sFileData.Name <> '.' ) and ( sFileData.Name <> '..' ) ) then
  begin
   if ( ( sFileData.Attr and faDirectory ) <> faDirectory ) then
    begin
     ShowMessage('File name = '+sFileData.Name);
     ShowMessage('File size = '+IntToStr(sFileData.Size));
    end
   else
   Scan( NomDossier + sFileData.Name);
  end;
 until ( FindNext( sFileData ) <> 0 );
end;
SysUtils.FindClose( sFileData );
end;

J'en avais besoin car je devais supprimer tout les fichiers *.bak présent dans le disque dur. Alors je modifie :
hFound := FindFirst( NomDossier + '*.*', faAnyFile, sFileData);
pour
hFound := FindFirst( NomDossier + '*.bak', faAnyFile, sFileData);

Mais ça ne marche pas, si je remplace par *.bak, la fonction sous-dossier ne fonctionnera plus. Je ne comprends pas pourquoi et j'esasie de comprendre mais sans résultat.

Quelqu'un aurait une idée ?

Merci d'avance,
bibi262
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 8 oct. 2006 à 20:46
3
Merci
u,

C'est parce que tu n'a pas de répertoire avec une extension.bak.

Il te faut analyser tous les fichiers et dossiers avec *.*, et dans "if ( ( sFileData.Attr and faDirectory ) <> faDirectory ) then" il te faut vérifier l'extension et si c'est .bak, suppr le fichier.

Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...

Merci Emandhal 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Emandhal
bibi262 9 Messages postés vendredi 14 janvier 2005Date d'inscription 4 décembre 2006 Dernière intervention - 8 oct. 2006 à 22:22
0
Merci
Merci beaucoup :D
Commenter la réponse de bibi262
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 13 oct. 2006 à 11:17
0
Merci
Hé mais c'est mon code çà ! :-) Content en tout cas que ma source serve à quelque chose !

Sinon oui le masque marche pour tout les types de fichier (donc dossier), il faut donc bien ajouter une condition sur le nom de fichier dans la boucle !

Bon Code !

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
Commenter la réponse de elguevel

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.