Rennomer tous les dossiers et les sous dossiers

Signaler
Messages postés
44
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
26 décembre 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,
Je travaille sur un projet de cryptage, qui consiste à crypter et rennomer tous les fichiers de dossiers et de sous dossiers. je me suis chargé de cette partie.

Ce que je veux faire, c'est rennomer tous les dossiers et les sous dossiers d'un chemin spécifié.

J'ai cette méthode (Qui permet de lister les dossiers et les sous dossiers, le chemin le plus "Grand" est en dernier)

Dim folderArray() As String = IO.Directory.GetDirectories(TextBoxPath.Text, "*", IO.SearchOption.AllDirectories)

Et je fais une boucle for each qui permet de rennommer chaque dossier (Disons en y ajoutant _Test a la fin pour ne pas alourdir la tâche)

Voici le code que j'ai fait:



Dim folderArray() As String = IO.Directory.GetDirectories(TextBoxPath.Text, "*", IO.SearchOption.AllDirectories)

For Each folder In folderArray
Dim infoParent As New IO.DirectoryInfo(folder)
Dim dossierParent = infoParent.Parent.FullName 'DOSSIER PARENT
Dim nomDossier = folder.Split(IO.Path.DirectorySeparatorChar).Last() 'NOM DOSSIER
FileSystem.Rename(folder, dossierParent & "\" & nomDossier & "_Test")
Next



Le problème c'est qui si j'ai un dossier comme ceci:


Dossier Parent
-- Dossier 1
---- Dossier 2
------ Dossier 3
---- Dossier 4
-- Dossier 5


folderArray aura comme valeur
{"Dossier Parent\Dossier 1","Dossier Parent\Dossier 5","Dossier Parent\Dossier 1\Dossier 2","Dossier Parent\Dossier 1\Dossier 4","Dossier Parent\Dossier 1\Dossier 2\Dossier 3"}


Le logiciel va lancer la boucle (En gros:)

Rennomer("Dossier Parent\Dossier 1", "Dossier Parent\Dossier 1_Test")
Rennomer("Dossier Parent\Dossier 5", "Dossier Parent\Dossier 5_Test")
Rennomer("Dossier Parent\Dossier 1\Dossier 2", Attends une minute, ce chemin n'existe pas ("Dossier Parent\Dossier 1\Dossier 2") car Il a été changé en "Dossier Parent\Dossier 1_Test\Dossier 2". ERREUR. )

Ceci est mon prblème, j'avais pensé du coup à créer un nouveau tableau en mettant la derniere valeur à la place de la première et vice versa, mais je voulais voir vos éventuelles suggestions ou aide, Je vous remerci d'avoir lu ce post, si vous n'avez pas bien compris, (Car oui, j'explique trop bien :p) je pourrais vous réexpliquer, avec les détails qui vous échappent.

PS: Si il y a un moyen beacoup plus simple faites moi signe :)

Cordialement,
Secondary

3 réponses

Messages postés
44
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
26 décembre 2013
1
Bonjour NHenry, en quoi consiste une méthode récursive ? Si j'ai bien compris c'est de créer une fonction qui s'appelle elle-même, mais je ne vois pas comment je pourrais mettre en place un systeme de liste de dossiers. Merci de ta réponse, je vais me pencher la dessus.
Messages postés
14743
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 décembre 2020
148
En simplifié :

Fonction Renomme(DossierARenommer)

Pour chaque enfant de DossierARenommer
Renomme (Enfant)
Fin Pour

RenommerDossier(DossierARenommer)

Fin Fonction
Messages postés
14743
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 décembre 2020
148
Bonsoir,

Je te conseil plutôt de faire une méthode récursive, comme ça tu auras plus de facilité à gérer dans quel ordre tu veux renommer tes dossiers.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
je ne comprends personnellement pas la nécessité de procéder ainsi.
Il suffit en effet de copier tout le contenu du dossier de base ("dossier_parent") vers un dossier "dossier_parent_test", dans rien changer des noms des sous-répertoires qu'il contient, pour qu'aucune confusion ne soit possible entre les sous-dossiers de "Dossier-parent" et de "Dossier_parent_test".
Mais je dois être fatigué ... hein ... ou alors trop "corse" (ce que je suis à 50 %) , avec tous les défauts induits, dont le goût de la simplicité.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend