Page 1 sur 1
Faire un " DIR *.mp3 /B /S > listmp3.txt" en pu
Publié : lun. 19/avr./2004 15:52
par Yves Rouquier
Bonjour !
tout est dans le sujet !
C'est a dire faire une liste de tous les "mp3" d'un repertoire mais
aussi des sous repertoires
J'aimerai avoir le meme resultat avec les commandes Examinedirectory
NextDirectoryEntry() DirectoryEntryName() etc ...
Ce n'est pas aussi simple que ça en a l'air !
on ne connait pas la "profondeur" des repertoire a l'avance !
je ne vois pas comment construire l'algo pour faire cette manip
sans doute l'utilisation de structure recurcive !
Mais je n'ais pas envie de reinventer la roue
si vous avez du code !
Merci
Publié : lun. 19/avr./2004 15:59
par Chris
Code trouvé sur CodeArchiv:
Code : Tout sélectionner
; English forum: http://www.curvesoftware.co.uk/purebasic/topic.asp?TOPIC_ID=5904
; Author: Sebi
; Date: 18. April 2003
Procedure.s ListFiles(directory.s , filename.s, extension.s , directoryid.l )
If Right(directory,1)<>"\"
directory+"\"
EndIf
ExamineDirectory(directoryid,directory,"*.*")
dirid=NextDirectoryEntry()
While dirid
Select dirid
Case 1
file.s=DirectoryEntryName()
this_extension.s=LCase(GetExtensionPart(file))
this_filename.s=LCase(Left(file,Len(file)-Len(this_extension)))
If Len(this_extension)
this_filename=Left(this_filename,Len(this_filename)-1)
EndIf
If this_extension=extension Or extension="*"
If this_filename=filename Or filename="*"
file.s=directory+DirectoryEntryName()
;file contains the full path and filename
;you must insert here what to do with the file
Debug file
EndIf
EndIf
Case 2
If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
ListFiles(directory+DirectoryEntryName()+"\",filename,extension,directoryid+1)
UseDirectory(directoryid)
EndIf
EndSelect
dirid=NextDirectoryEntry()
Wend
ProcedureReturn ""
EndProcedure
Debug "all txt-files in c:\windows\"
ListFiles("C:\Windows","*","txt",0) ; the last parameter should be zero
Debug ""
Chris

Merci
Publié : lun. 19/avr./2004 16:22
par Yves Rouquier
je n'avais pas assez chercher j'ais trouver la meme source .
C'est bien une procedure recurcive !
Merci encore .
la prochaine fois je ferai tourner 7 fois google
avant de poster une question !
Publié : mar. 20/avr./2004 5:36
par ZapMan
C'est un bien beau bout de code !
Notes pour ceux que la construction de cette procédure pourrait intriguer :
La récursivité, c'est quand une procédure s'appelle elle-même. Le problème des dossiers qui peuvent contenir des dossiers qui peuvent contenir des dossiers... etc... est un très bon exemple de cas compliqué de programme pour lequel l'utilisation de la récursivité est intéressante.
Pour ceux qui auraient peur de la récursivité (qui implique des règles de programmation assez strictes), j'utilise parfois une petite combine logique qui arrive au même résultat :
Code : Tout sélectionner
cont=1
While cont
cont = 0
For i =1 to x
If Condition
; action a effectuer
cont = 1 ; si la condition a été rencontrée, on refait la boucle
EndIf
Next
Wend