Comment lister les fichiers d'un disque dur (ou autre ...)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 789 fois - Téléchargée 63 fois

Contenu du snippet

Tout d'abord ce code n'est pas de moi, mais je le poste sur ce site à votre disposition...

IL FAUT METTRE L'EXECUTABLE A LA RACINE DU DISQUE

!! ATTENTION !!
CHEZ MOI POUR UN DISQUE PLEIN DE 800 MO ENVIRON, LE FICHIER TEXTE PESE 543 ko Ouch !!

Source / Exemple :


'A METTRE DANS UN MODULE
Sub RecurseTree(CurrentPath$)
	Dim i, n
	Dim FileName$, DirectoryList$()
	FileName$=Dir(CurrentPath$)
	Do While FileName$ <> ""
		Print #1, CurrentPath$ & FileName$
		FileName$=Dir
Loop
FileName$=Dir(CurrentPath$, vbDirectory)
Do While FileName$ <> ""
	If FileName$ <> "." and FileName$ <> ".." then
		If GetAttr(CurrentPath$ & FileName$) and vbDirectory then
		n=n+1
		Redim Preserve DirectoryList$(n)
		DirectoryList$(n)=CurrentPath$ & FileName$
		end if
	end if
	FileName$=Dir
	loop
For i=1 to n
	RecurseTree DirectoryList$(i) & "\"
next i
end sub

'A METTRE DANS LA FORM
Private Sub Form_Load()
Dim StartPath$
Me.Show
Print "Je bosse..."
StartPath$="c:\"
Open "Files.txt" For Output As #1
RecurseTree StartPath$
Close #1
unload me
end sub

Conclusion :


Voilà c'est fait si vous avez besoin d'explication mailez-moi

Ah !! autre chose si kelk'un pouvez me dire comment faire pour lister les unités d'un systeme (Hdd, Floppy, CDrom, Ramdisk...) et l'inclure dans mon programme pour povoir selectionner une unité ce serait sympa !!

A voir également

Ajouter un commentaire

Commentaires

mangoust
Messages postés
7
Date d'inscription
lundi 18 mars 2002
Statut
Membre
Dernière intervention
9 juillet 2003
-
Pour ma part j'ai amélioré ce source (qui est très bien par ailleurs) pour répondre à mes attentes et je vous joint ma modif qui permet de filtrer le type de fichiers cherchés et de rediriger la liste vers un fichier ou un tableau...
mangoust
Messages postés
7
Date d'inscription
lundi 18 mars 2002
Statut
Membre
Dernière intervention
9 juillet 2003
-
Pour ma part j'ai amélioré ce source (qui est très bien par ailleurs) pour répondre à mes attentes et je vous joint ma modif :

Public Sub SCANNER_LE_DISQUE(ByVal LE_REP_DE_DEPART As String, _
ByVal LA_REDIRECTION As eREDIRECTION, _
Optional ByVal LES_MASQUES As String = "*.*", _
Optional ByRef LE_TABL_DE_SORTIE As Variant, _
Optional ByVal LE_NO_DE_FICHIER As Long = 1)

On Error Resume Next 'Obligatoire pour ne pas être emmerdé par les fichier ssytèmes (jusqu'à autre solution...)

Dim I, N As Long
Dim LE_COMPTEUR As Long
Dim LE_NOM_FICHIER As String
Dim LE_TABL_DE_REP_FILS() As String
Dim LE_TABL_DE_MASQUES() As String

LE_COMPTEUR = 0
LE_TABL_DE_MASQUES = Split(LES_MASQUES, ";")

For I = LBound(LE_TABL_DE_MASQUES) To UBound(LE_TABL_DE_MASQUES)
'Sauve tous les noms de fichiers du répertoire en cours de traitement qui correspondent au Masque.
'FileName$ = Dir(CurrentPath & Mask)
LE_NOM_FICHIER = Dir(LE_REP_DE_DEPART & LE_TABL_DE_MASQUES(I))

Do While LE_NOM_FICHIER <> ""
LE_COMPTEUR = LE_COMPTEUR + 1
If (LE_COMPTEUR Mod 10) = 0 Then
DoEvents
End If

Select Case LA_REDIRECTION
Case eREDIRECT_FICHIER: Print #LE_NO_DE_FICHIER, LE_REP_DE_DEPART & LE_NOM_FICHIER
Case eREDIRECT_TABLEAU:
ReDim Preserve LE_TABL_DE_SORTIE(1 To 2, UBound(LE_TABL_DE_SORTIE, 2) + 1) As String

LE_TABL_DE_SORTIE(1, UBound(LE_TABL_DE_SORTIE, 2)) = LE_REP_DE_DEPART
LE_TABL_DE_SORTIE(2, UBound(LE_TABL_DE_SORTIE, 2)) = LE_NOM_FICHIER
End Select

LE_NOM_FICHIER = Dir 'Fichier Suivant
Loop
Next I

'Cherche ts les répertoires "fils"
LE_NOM_FICHIER = Dir(LE_REP_DE_DEPART, vbDirectory)

Do While LE_NOM_FICHIER <> ""
LE_COMPTEUR = LE_COMPTEUR + 1
If (LE_COMPTEUR Mod 10) = 10 Then
DoEvents
End If

If LE_NOM_FICHIER <> "." And LE_NOM_FICHIER <> ".." Then
'On regarde si le fichier est un répertoire. Si tel est le cas, on mémorise son nom
'afin de scruter les sous répertoire de celui-ci par la suite...
If (GetAttr(LE_REP_DE_DEPART & LE_NOM_FICHIER) And vbDirectory) = vbDirectory Then 'ATTENTION : Les fic systèmes nous foutent en erreur !
N = N + 1
ReDim Preserve LE_TABL_DE_REP_FILS(N) As String
'Mémorise le nom du répertoire
LE_TABL_DE_REP_FILS(N) = LE_REP_DE_DEPART & LE_NOM_FICHIER
End If
End If

LE_NOM_FICHIER Dir 'Fichier suivant dans la liste extraite par LE_NOM_FICHIER Dir(CurrentPath, vbDirectory)
Loop

'Recense ts les fichiers des répertoires mémorisés => Va nous donner : 1. Une liste de fichiers
' 2. Une autre liste de sous-répertoire (éventuellement)
For I = 1 To N
SCANNER_LE_DISQUE LE_TABL_DE_REP_FILS(I) & "", LA_REDIRECTION, LES_MASQUES, LE_TABL_DE_SORTIE, LE_NO_DE_FICHIER
Next I
End Sub

Private Sub Form_Load()
Dim A() As String
Dim J

'Open "d:Files.txt" For Output As #1

ReDim A(1 To 2, 0) As String 'A faire avant d'appeler SCANNER_LE_DISQUE sous peine d'erreur !
SCANNER_LE_DISQUE "Q:", eREDIRECT_TABLEAU, "*.zip;*.exe;*.doc;*.pdf", A, 1

For J = LBound(A, 2) + 1 To UBound(A, 2)
Debug.Print A(1, J) & A(2, J)
Next J

'Close #1

Unload Me
End Sub
Benj1105
Messages postés
103
Date d'inscription
samedi 23 mars 2002
Statut
Membre
Dernière intervention
2 mars 2004
-
C est dans cette ligne je pense:
If FileName$ <> "." And FileName$ << ".." Then

tu rajoute la condition and les trois derniers caracteres sont .txt (je l ai mis en francais mais c est pas compliqué à convertir)
J'aurai voulu repertorier seulement un certain type de fichier.
ex: *toto*.titi
comment on repertorie ke un certain type de ficgier (par exemple ke les dll ou ke les mp3)

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.