Débutant / Traiter les noms de fichiers d'un dossier

Castow Messages postés 2 Date d'inscription vendredi 19 novembre 2010 Statut Membre Dernière intervention 20 novembre 2010 - 19 nov. 2010 à 18:36
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 21 nov. 2010 à 00:59
Bonjour!
J'utilise "Microsoft Visual Basic 2010". Et j'avais une petite question. Voila... En gros on imagine que dans une partie de programme j'ai un bouton "Parcourir", qui m'envoie le chemin d'accès à un dossier dans un champ texte, et un bouton "Traiter".

J'aimerais que, lorsque je clique sur un bouton "Traiter", le petit programme procède à une analyse du contenu du dossier (Combien de fichiers audio? Les noms des fichiers audios contiennent ils tous un nombre?) Et effectue des opérations de traitement / stockage / création de listes... A partir des fichiers du dossier donné.

En gros le genre d'instructions que je voudrais apprendre à coder :
Regarde dans le dossier "Youpi"
Compte le nombre de fichiers Audio
Compte le nombre de fichiers Audio dont le titre contiens un nombre
Crée une liste associant les chemins d'accès aux fichiers audios à des nombres de 1 à tant...

Enfin des trucs comme ça, qui nécessitent de manipuler des noms, des ordres et des types de fichiers.

Faudrait que j'm'intéresse à quoi? Que j'aille regarder où? Quel genre de fonction faudriat que j'utilise? J'me sent completement paumé!

Merci beaucoup d'avance pour votre aide ^__^!

6 réponses

Number7 Messages postés 23 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 27 décembre 2010 1
19 nov. 2010 à 20:14
J'ai récemment découvert une DLL system qui permet de faire la gestion des fichiers et des dossiers : FileSystemObjet

1 - (Menu) : Projet/Ajouter une référence (Onglet "COM") -> Microsoft Scripting Runtime


2 - Ajoute deux ListBox sur une feuille Nommés ListDossiers et ListFichiers

3 - Pour le code, je t'ai fait un petit exemple qui parcours tous les fichiers et les dossiers contenue directement ( pas dans les sous-dossiers) dans "c:" et les affiche dans deux ListBox.

'Variables temporaires
Dim Fso As Scripting.FileSystemObject
Dim Dossier As Scripting.Folder
Dim Dossiers As Scripting.Folders
Dim Fichier As Scripting.File
Dim Fichiers As Scripting.Files

'Créer une nouvelle instance de type FileSystemObjet
Fso = New Scripting.FileSystemObject

'Initialiser la variable Dossier
Dossier = Fso.GetFolder("c:")

'Initialiser la variable Dossiers
Dossiers = Dossier.SubFolders

'Initialiser la variable Fichiers
Fichiers = Dossier.Files

'***** Ce code ne gère pas les sous-dossiers *******

'Parcourir tous les fichiers contenue directement dans "c:"
For Each Fichier In Fichiers
'Ajouter le fichier en cours dans la liste de fichiers
ListFichiers.Items.Add(Fichier.Name)
Next (Fichier)

'Parcourir tous les dossiers contenue directement dans "c:"
For Each Dossier In Dossiers
'Ajouter le dossier en cours dans la liste de dossiers
ListDossiers.Items.Add(Dossier.Name)
Next (Dossier)
0
Profil bloqué
19 nov. 2010 à 21:07
bonjour

Pour Number7
Je crains que tu ais répondu un peu vite : notre ami Castow utilise "Microsoft Visual Basic 2010" soit certainement VB Net 2010. Ta réponse concerne VB 6.0

Pour Castow un cours VB Net complet est disponible ici : http://plasserre.developpez.com/cours/vb-net/
Ne brûle pas les étapes et prends ton temps

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Number7 Messages postés 23 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 27 décembre 2010 1
19 nov. 2010 à 21:36
Je test toujours avant de répondre n'importe quoi et j'ai fait le test Avec VB 2010.

Ma passion : l'électronique et la programmation
0
Profil bloqué
20 nov. 2010 à 00:33
Et pourquoi ne pas utiliser la Classe System.Io.Files du framework VB Net à la place de ce bon vieux FileSystemObjet qui appartient à un autre age : cela ferait plus DoNet comme on dit
Libre à toi d'utiliser VB Net en mode compatibilité VB 6.0


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Castow Messages postés 2 Date d'inscription vendredi 19 novembre 2010 Statut Membre Dernière intervention 20 novembre 2010
20 nov. 2010 à 19:08
Merci pour toutes ces solutions ^^! Ca me servira beaucoup =p. J'expérmiente un peu tout ça, et ça marche pas mal, jvais ptet pouvoir arriver à quelquechose lol!

Bonne continuation!
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 nov. 2010 à 00:59
Salut

c'est en vb2008 je pense que ça doit marcher
en 2010

Private listfiles() As String
Private countaudio As Integer
Private countaudionombre As Integer
Private Sub AnalizeDirectory()
        Dim iter As Integer
        Dim numeric As Boolean
        Dim filechar As Integer
        Dim result As Double
        Dim pathdirectory As String
        'pathdirectory : le path du répertoir à analyser
        pathdirectory = "E:\ReadFile"
        Dim di As New IO.DirectoryInfo(pathdirectory)
        Dim aryFi As IO.FileInfo()
        aryFi = di.GetFiles()
        Dim fi As IO.FileInfo
        iter = 0
        countaudio = 0
        countaudionombre = 0
        ReDim listfiles(iter)
        For Each fi In aryFi
            ' il y a encore des extension pour les audio file donc il faut les ajouter
            If fi.Extension ".wav" Or fi.Extension ".mdi" Then
                countaudio = countaudio + 1
                numeric = False
                filechar = 0
                'verifie s'il y a un chiffre dans le filename
                While Not numeric And filechar < fi.Name.Length
                    If Double.TryParse(fi.Name.Substring(filechar, 1), result) Then
                        numeric = True
                    Else
                        filechar = filechar + 1
                    End If
                End While
                If numeric Then
                    countaudionombre = countaudionombre + 1
                End If
                ReDim Preserve listfiles(iter)
                listfiles(iter) = fi.FullName
                iter = iter + 1
            End If
        Next
    End Sub


il y encore à ameliorer
0
Rejoignez-nous