Récursive *.bak [Résolu]

Messages postés
9
Date d'inscription
vendredi 14 janvier 2005
Dernière intervention
4 décembre 2006
- - Dernière réponse : elguevel
Messages postés
735
Date d'inscription
jeudi 19 décembre 2002
Dernière intervention
22 novembre 2016
- 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
Messages postés
199
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 octobre 2006
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Emandhal
Messages postés
9
Date d'inscription
vendredi 14 janvier 2005
Dernière intervention
4 décembre 2006
0
Merci
Merci beaucoup :D
Commenter la réponse de bibi262
Messages postés
735
Date d'inscription
jeudi 19 décembre 2002
Dernière intervention
22 novembre 2016
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.