Renommer à la volée plusieurs dossiers selon une liste
kyuubi66
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
jogadyl Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
jogadyl Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
On me demande pour mon travaille de renommer environ 4000 dossiers selon une liste, je m'explique :
Sur le réseau on a une arborescence s'appelant "base de données" qui contient environ 4000 dossiers tous nommés selon des codes de bâtiment (exemple : batiment 1 = 3860 , batiment 2 = 3956, ...)
On me dit que les codes (3860, 3956, ...) vont changer et qu'il faut que je renomme tout donc que je dise à mon script "quand tu rencontres le dossier 3860 tu le renommes "toto" par exemple.
Est-ce possible?
Merci
On me demande pour mon travaille de renommer environ 4000 dossiers selon une liste, je m'explique :
Sur le réseau on a une arborescence s'appelant "base de données" qui contient environ 4000 dossiers tous nommés selon des codes de bâtiment (exemple : batiment 1 = 3860 , batiment 2 = 3956, ...)
On me dit que les codes (3860, 3956, ...) vont changer et qu'il faut que je renomme tout donc que je dise à mon script "quand tu rencontres le dossier 3860 tu le renommes "toto" par exemple.
Est-ce possible?
Merci
A voir également:
- Renommer des dossiers en masse
- Renommer des fichiers en masse - Guide
- Renommer iphone - Guide
- Comment renommer quelqu'un sur instagram - Guide
- Renommer des fichiers en masse avec excel - Forum gestion du temps
- Dispositif de stockage de masse usb - Télécharger - Pilotes & Matériel
4 réponses
transforme le fichier qui contient les remplacements à faire et transforme-le en batch que tu pourras exécuter
Par exemple si ton fichier se présente sous forme d'un tableau avec une colonne pour l'ancien nom et une autre pour le nouveau du genre
3860 riri
3956 fifi
4153 loulou
tu peux facilement le transformer avec un éditeur de texte en
rename 3860 riri
rename 3956 fifi
rename 4153 loulou
tu le sauve en .bat et voilà!
Ce n'est pas de la programmation de haute volée mais c'est simple et rapide a mettre en oeuvre.
Par exemple si ton fichier se présente sous forme d'un tableau avec une colonne pour l'ancien nom et une autre pour le nouveau du genre
3860 riri
3956 fifi
4153 loulou
tu peux facilement le transformer avec un éditeur de texte en
rename 3860 riri
rename 3956 fifi
rename 4153 loulou
tu le sauve en .bat et voilà!
Ce n'est pas de la programmation de haute volée mais c'est simple et rapide a mettre en oeuvre.
bonjour et merci pour ta réponse
Je n'ai pas de fichier j'ai une arborescence réseau à multi niveaux donc le 3860 riri je ne sais pas où il se trouve dans mon arborescence... d'où mon problème
Je ne sais pas si je suis clair
Je n'ai pas de fichier j'ai une arborescence réseau à multi niveaux donc le 3860 riri je ne sais pas où il se trouve dans mon arborescence... d'où mon problème
Je ne sais pas si je suis clair
Ça aurait été plus clair avec plus d'information sur la structure des répertoires, si les noms à changer pouvaient se retrouver à plusieurs endroits, sur la façon dont les noms à changer et les noms de remplacement sont nommés, ainsi que sur la structure du fichier qui contient les changements à effectuer.
A défaut voici les conventions que j'ai utilisées :
- les noms à changer peuvent se trouver n'importe où et même plusieurs fois dans l'arborescence.
- ces noms et les noms de remplacement ne comportent pas d'espace. Si c'est le cas tu devras adapter. En revanche il n'y a pas de contrainte sur les noms de fichiers qui appartiennent à l'arborescence mais qu'on ne veut pas remplacer.
- le fichier qui contient les anciens et les nouveaux noms des répertoire s'appelle remplace.txt
Chaque ligne contient l'ancien nom et le nouveau nom séparés par des espaces ou des tabulations. Ces noms ne doivent pas contenir d'espaces et ne doivent pas être entre guillemets.
Le programme commence par construire la liste des répertoires à remplacer dans le fichier repertoires.txt
Pour chaque répertoire on note le remplacement à faire dans un fichier temp par comparaison avec le fichier remplace.txt
Dans le programme le nom à remplacer est %%A et le nom de remplacement est %%B. %%R est le chemin complet du répertoire à renommer.
Il n'est en effet pas possible de faire les remplacements au fur à mesure car les indications du fichier repertoires.txt ne seraient plus valables.
Il va falloir exécuter ces instructions dans un ordre tel que les instructions suivantes soient toujours possibles.
ex:
si on a les remplacements suivants à faire
antoine toni
emmanuel manu
joseph jojo
et que les répertoires se trouvent dans la même arborescence
antoine\emmanuel\joseph
Les remplacements à faire sont
Si on fait les remplacements dans cet ordre, seule la première instruction aboutira.
L'astuce consiste à reclasser les instructions enregistrées dans le fichier temp par ordre alphabetique inverse (c.a.d du plus long au plus court).
Toutes les instructions peuvent alors s'exécuter sans problème.
Le fichier classé est enregistré dans temp.bat et il n'y a plus qu'à le lancer pour faire le travail.
A défaut voici les conventions que j'ai utilisées :
- les noms à changer peuvent se trouver n'importe où et même plusieurs fois dans l'arborescence.
- ces noms et les noms de remplacement ne comportent pas d'espace. Si c'est le cas tu devras adapter. En revanche il n'y a pas de contrainte sur les noms de fichiers qui appartiennent à l'arborescence mais qu'on ne veut pas remplacer.
- le fichier qui contient les anciens et les nouveaux noms des répertoire s'appelle remplace.txt
Chaque ligne contient l'ancien nom et le nouveau nom séparés par des espaces ou des tabulations. Ces noms ne doivent pas contenir d'espaces et ne doivent pas être entre guillemets.
echo off
cls
dir /ad /s /b >repertoires.txt
if exist temp del temp
for /f "tokens=1,2" %%A in (remplace.txt) do (
for /f "tokens=*" %%R in ('findstr /I "%%A$" repertoires.txt') do (
echo rename "%%R" "%%B" >> temp
)
)
sort /R temp /O temp.bat
del repertoires.txt
del temp
call temp.bat
del temp.bat
Le programme commence par construire la liste des répertoires à remplacer dans le fichier repertoires.txt
Pour chaque répertoire on note le remplacement à faire dans un fichier temp par comparaison avec le fichier remplace.txt
Dans le programme le nom à remplacer est %%A et le nom de remplacement est %%B. %%R est le chemin complet du répertoire à renommer.
Il n'est en effet pas possible de faire les remplacements au fur à mesure car les indications du fichier repertoires.txt ne seraient plus valables.
Il va falloir exécuter ces instructions dans un ordre tel que les instructions suivantes soient toujours possibles.
ex:
si on a les remplacements suivants à faire
antoine toni
emmanuel manu
joseph jojo
et que les répertoires se trouvent dans la même arborescence
antoine\emmanuel\joseph
Les remplacements à faire sont
rename "antoine" toni
rename "antoine\emmanuel" manu
rename "antoine\emmanuel\joseph" jojo
Si on fait les remplacements dans cet ordre, seule la première instruction aboutira.
L'astuce consiste à reclasser les instructions enregistrées dans le fichier temp par ordre alphabetique inverse (c.a.d du plus long au plus court).
Toutes les instructions peuvent alors s'exécuter sans problème.
Le fichier classé est enregistré dans temp.bat et il n'y a plus qu'à le lancer pour faire le travail.