IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Copie de sous dossiers en fonction du nom


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Par défaut Copie de sous dossiers en fonction du nom
    Bonjour à tous

    Je vous explique mon problème.

    Je dois développer une petite application qui doit rechercher dans des dossiers tous les dossiers d'une année (recherche en fonction du nom du dossier, par exemple 2004-02 ou 2006-12, et non pas sur l'année réelle de création ) et le copier sur un disque dur externe.

    j'arrive à copier sans problème. le seul problème que j'ai est que je ne connais pas le nombre de sous dossiers à parcourir, donc je ne peux pas écrire le chemin en dur.

    Je dois par exemple chercher dans toto/tata/plein de dossiers/2006-12.

    J'arrive à chercher dans le premier dossier et ses sous dossiers, mais impossible pour moi de remonter au premier dossier pour chercher dans le second sous dossier...

    je sais pas si c'est assez clair? Pouvez vous m'aider?

    merci d'avance...

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        Private Sub rechercheDossier(ByVal source As DirectoryInfo, ByVal dest As DirectoryInfo, ByVal Annee As String) ' source = adresse du dossier principal. dest adresse du HDD et Annee = annee contenu dans nom du dossier à copier.
     
            For Each subDirectory As DirectoryInfo In source.GetDirectories()
     
                If subDirectory.Name.Contains(Annee) Then
     
                    CopyDossier(subDirectory, dest.CreateSubdirectory(subDirectory.Name)) 'appel de la fonction copie
                    subDirectory.Delete(recursive:=True)
     
     
                Else
     
     
                    rechercheDossier(New DirectoryInfo(dossier & "\" & subDirectory.Name), New DirectoryInfo(AdrHDD), Annee) 'rappel de cette même fonction pour chercher dans les sous dossiers
                    dossier = dossier & "\" & subDirectory.Name 'redéfinition du chemin 
     
                End If
     
            Next
     
            dossier = AdrPC 'on redéfini le chemin d'origine
     
        End Sub

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Comment déclares-tu ta variable "dossier", ta variable "AdrHDD", et ta variable "AdrPC" ? Elles sont de quel type ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Par défaut
    Elles sont déclarés plus haut dans le programme. en string.

    mais j'ai pas fait qu'attendre une réponse, j'ai pris une pause et j'y suis repartit.

    en fait il fallait juste faire une double boucle car avec l'arborescence en présence, on ne descend que sur 2 niveau x/y/annee...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
        'fonction de recherche des dossiers
     
        Private Sub rechercheDossier(ByVal source As DirectoryInfo, ByVal dest As DirectoryInfo, ByVal Annee As String)
     
            For Each subDirectory As DirectoryInfo In source.GetDirectories() 'premiere boucle qui rentre dans chaque sous-dossier
     
                For Each subDirectory2 As DirectoryInfo In subDirectory.GetDirectories() 'seconde boucle qui rentre dans les sous-sous-dossiers
     
     
                    If subDirectory2.Name.Contains(Annee) Then 'si presence d'un sous-sous-sous dossier contenant le nom cherché
     
                        CopyDossier(subDirectory2, dest.CreateSubdirectory(subDirectory2.Name)) 'copie dans nouveau repertoire
                        subDirectory2.Delete(recursive:=True) 'suppression de l'ancien dossier
     
     
                    End If 'fin du if
     
                Next 'on revient dans les "sous-dossiers" pour rentrer dans le "sous-sous-sous dossier" suivant
     
            Next 'on revient dans le 
     
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Lister les dossiers et sous dossiers en fonction du format du nom
    Par elminio75 dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/09/2013, 09h48
  2. Réponses: 0
    Dernier message: 07/08/2012, 13h20
  3. [Toutes versions] Déplacer fichier dans un dossier en fonction du nom
    Par asengs dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/03/2011, 16h50
  4. Réponses: 13
    Dernier message: 15/07/2010, 09h51
  5. Réponses: 0
    Dernier message: 01/02/2010, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo