Remodeler les dossiers en fonction de leurs noms

Fermé
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020 - 8 déc. 2013 à 14:59
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020 - 19 mars 2016 à 12:15
Bonjour tout le monde !
Je ne sais pas si je suis dans le bon forum, ptet plutôt les logiciels, mais j'ai bien cherché, et j'ai pas trouvé de trucs correspondants..

Loin de moi l'idée de faire un logiciel, j'en serai bien incapable.. A la limite un fichier BAT mais ça s'arrête là !

Voilà, certains de mes MP3 sont rangés dans des dossiers nommés de la sorte : "Return to forever [UK](1977) Musicmagic"
Soit Nom de l'artiste [PAYS](Année) Album. Il contient des mp3, des images et de temps en temps des dossiers contenant les images.
Bon. Jusque là tout va bien.

Ce que j'aimerais faire, c'est de créer un dossier "(1977) Musicmagic" dans le dossier parent "Return to forever [UK](1977) Musicmagic" qui serait lui même renommé "Return to forever [UK]". Au passage tous les fichiers présents dans le dossier parent seraient déplacés dans le nouveau dossier "(1977) Musicmagic" !

En gros partir de ça :
http://i785.photobucket.com/albums/yy135/MattSixSixSix/a_zpse8644051.jpg

Pour arriver à ça :
http://i785.photobucket.com/albums/yy135/MattSixSixSix/b_zps9114a07e.jpg

Ou schématiquement
Return to forever [UK](1977) Musicmagic
Mp3
Scans

Vers ça :
Return to forever [UK]
(1977) Musicmagic
Mp3
Scans

J'espère que je suis clair ! ^^
Alors dites moi : C'est possib ? Si oui en BAT ? ou autre ? Si non, diantre de fichtre..
Mais je pense que c'est possib.

merci à vous !
Matt

A voir également:

16 réponses

dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
8 déc. 2013 à 16:07
hello
le point de séparation entre Return to forever [UK](1977) Musicmagic et Return to forever [UK] c'est une (
est-ce que c'est toujours vrai ?
C:> for /f "delims=( tokens=1,2" %a in ("Return to forever [UK](1977) Musicmagic") do @echo %a&@echo (%b
Return to forever [UK]
(1977) Musicmagic
1
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
8 déc. 2013 à 16:50
Salut ! Merci pour le boulot !! Vache...
C'est quoi comme programmation ? C ? DOS ? Ptet que C et DOS c'est pareil, ah aha..
De ce que je vois, ce dossier n'en est qu'un parmi tant d'autres, du coup faudrait plutôt une variable que d'écrire le nom du dossier en dur..

Le point de séparation serait plutôt ]( que seulement ( c'est possible ? Et là oui c'est toujours vrai ! Après si on peut mettre une sécurité du genre "s'il ne trouve pas de "[" ET "]" ne pas faire le dossier ?

Et sinon le but serait de mettre tout ça dans un fichier BAT, et que je le lance à l'emplacement des dossiers parents (ceux avec le point de séparation "](" ) comment faire pour qu'il passe en revue tous les dossiers de l'emplacement ?

Et avec ce pti bout de code il déplace les fichiers de "Return to forever [UK](1977) Musicmagic" dans "Return to forever [UK]\(1977) Musicmagic" ?
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
9 déc. 2013 à 09:29
c'est du DOS pour fichier .bat
il ne fait que montrer la coupure d'un texte (nom de fichier, variable, etc)
les noms de fichiers peuvent être récupérés par une boucle,
le séparateur ne peut être qu'un seul caractère.
oui, on peut tester la présence de ][
montre une série de noms, pour tester.
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 9/12/2013 à 10:09
Allez zou, série de noms (avec des pièges sinon c'est pas drôle ! ^^) :
Heart of a Coward [](2013) Severance
Tycho [](2012) Dive [Deluxe Version] (vu que le séparateur est )[ ça ne devrait pas poser de pbs)
Zombi - (2009) Spirit Animal (normalement il ne devrait pas toucher à celui ci)
GARRETT Kenny [US](2013) Pushing The World Away
Blacklisters [](2012) BLKLSTRS
Culture [US]() Deforestation
PETRAKIS Stelios [], Bijan Chemirani [](2003) Kismet
Badume's Band & Selamnesh Zemene [](2011) Ale Gena Ethiopia
ASTATKE Mulatu [ET] (celui ci est déjà "formaté" et du coup il ne devrait pas y toucher)

En tout cas merci c'est vraiment cool !

Juste comme ça, c'est pas plutôt un for /d qu'il faut utiliser pour les dossiers ?

Ah oui, comment tu fais pour mettre ton code juste en gris comme ça ? avec la balise <code*> il met les parenthèses d'une autre couleur.
0

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

Posez votre question
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 9/12/2013 à 15:29
for /F c'est pour analyser une chaine, et effectivement for /D pour afficher les dossiers
c'est une balise code simple, cliquer sur <> ce qui génère <code></code>
je teste
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
9 déc. 2013 à 19:07
ok d'ac merci !
Impatient de voir le résultat ! En plus ca va me faire un début pour tenter la prog en DOS ! Cool !
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
10 déc. 2013 à 09:59
soit ta liste de répertoires voila ce que ferait le script dd, 2 répertoires ne sont pas touchés, les autres sont renommés et un sous-répertoire créé.

C:> dir /b
ASTATKE Mulatu [ET]
Badume's Band ^& Selamnesh Zemene [](2011) Ale Gena Ethiopia
Blacklisters [](2012) BLKLSTRS
Culture [US]() Deforestation
GARRETT Kenny [US](2013) Pushing The World Away
PETRAKIS Stelios [], Bijan Chemirani [](2003) Kismet
Tycho [](2012) Dive [Deluxe Version]
Zombi - (2009) Spirit Animal

C:>
C:> ..\dd
pas touche : ASTATKE Mulatu [ET]

rename "Badume's Band ^& Selamnesh Zemene [](2011) Ale Gena Ethiopia" "Badume's Band ^& Selamnesh Zemene []"
md "Badume's Band ^& Selamnesh Zemene []\(2011) Ale Gena Ethiopia"

rename "Blacklisters [](2012) BLKLSTRS" "Blacklisters []"
md "Blacklisters []\(2012) BLKLSTRS"

rename "Culture [US]() Deforestation" "Culture [US]"
md "Culture [US]\() Deforestation"

rename "GARRETT Kenny [US](2013) Pushing The World Away" "GARRETT Kenny [US]"
md "GARRETT Kenny [US]\(2013) Pushing The World Away"

rename "PETRAKIS Stelios [], Bijan Chemirani [](2003) Kismet" "PETRAKIS Stelios [], Bijan Chemirani[]"
md "PETRAKIS Stelios [], Bijan Chemirani []\(2003) Kismet"

rename "Tycho [](2012) Dive [Deluxe Version]" "Tycho []"
md "Tycho []\(2012) Dive [Deluxe Version]"

pas touche : Zombi - (2009) Spirit Animal

0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
10 déc. 2013 à 11:05
le script
@echo off
setlocal enableDelayedExpansion
for /d %%a in (*.*) do (
echo %%a | findstr /l "](" > NUL
set err=!errorlevel!
if !err! EQU 0 (
for /f "delims=( tokens=1,2" %%b in ("%%a") do (
echo rename "%%a" "%%b"
echo md "%%b\(%%c"
)
) else (
echo pas touche : %%a
)
echo.
)
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
10 déc. 2013 à 12:10
Salut ! Merciii ! Grosse balle !
Ben écoute j'ai essayé sur un répertoire en rajoutant
pause
à la fin pour voir un peu ce qui se tramait, et les messages sont bons, à chaque fois qu'il doit renommer il note qu'il le fait.
Sauf qu'il ne le fait pas ! Même en admin, c'est ptet normal je ne sais pas. Ptet les
echo
qu'il faut virer mais vu que je n'y connais rien je préfère que tu confirmes... Chez toi les dossiers sont renommés ?
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 10/12/2013 à 13:01
tout à fait, les echo affichent ce qu'il ferait sans agir.
en enlevant les echo, il va effectuer le rename et le md
ne pas enlever celui avec pas touche...
enlever ces 2 echo
echo rename "%%a" "%%b"
echo md "%%b\(%%c"
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 10/12/2013 à 13:52
D'ac c'est parfait ! Merci !
Par contre les fichiers dans le dossier Return to forever [UK](1977) Musicmagic se retrouvent dans le dossier Return to forever [UK] et pas dans le sous dossier (1977) Musicmagic !

Tu vois ce que je veux dire ?

Ah oui aussi ! Imaginons ceci (parce que ça VA arriver ^^) :
Un dossier Do you compute [FR](2007) Turnstile et juste en dessous un autre dossier Do you compute [FR](2008) And we are the winners. Donc un potentiel de risque puisque 2 dossiers Do you compute [FR] après renommage.

Que se passe t-il dans ce cas ?
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 10/12/2013 à 14:51
pour le 1er cas, on rajoute un move
for /f "delims=( tokens=1,2" %%b in ("%%a") do (
rename "%%a" "%%b"
md "%%b\(%%c"
move /Y "%%b\*.mp3" "%%b\(%%c"
)
pour le 2ème cas, effectivement on peut rajouter un nombre au nom du répertoire ?
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 10/12/2013 à 20:00
Alors !
Je pense que ça fonctionne, mais juste une petite question comme ça :

Prenons le cas Do you compute [FR](2007) Turnstile.
Ne serait-ce pas plus simple de faire comme ça :
1- Vérifier s'il existe déjà un dossier Do you compute [FR] dans les dossiers existants
1a) Si non, créer le dossier Do you compute [FR] et déplacer le dossier
1b) Si oui, déplacer le dossier Do you compute [FR](2007) Turnstile dans le dossier Do you compute [FR] existant
2- Renommer le dossier Do you compute [FR](2007) Turnstile en (2007) Turnstile.

Est-ce possible et plus simple ? Comme ça la condition est incorporée pour le cas 2 !
Je t'ai envoyé un plus gros exemple de noms de dossiers en MP.
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 10/12/2013 à 23:24
Arf je tente dans mon coin et je ne suis pas loin...
J'ai juste un pb avec la commande findstr...
Je te montre d'abord le code :
@echo off
setlocal enableDelayedExpansion

for /d %%a in (*.*) do (

echo %%a | findstr /l "](" > NUL
set err=!errorlevel!

if !err! EQU 0 (

for /f "delims=( tokens=1,2" %%b in ("%%a") do (

for /d %%d in (*.*) do (
echo %%a
echo %%b
echo (%%c
echo %%d | findstr /l /x /i "%%b" > NUL
set err2=!errorlevel!

echo %%d | findstr /s /l /x /i "(%%c" > NUL
set err3=!errorlevel!

if !err2! EQU 0 (
if !err3! EQU 0 (
echo groupe oui / album oui
rename "%%d" "%%d BIS"
rename "%%a" "(%%c"
move /Y "%%d BIS" "%%b"
move /Y "(%%c" "%%b"
) else (
echo groupe oui / album non
rename "%%a" "(%%c"
move /Y "(%%c" "%%b"
)
) else (
if !err3! EQU 0 (
echo groupe non / album oui
md "%%b"
rename "%%d" "%%d BIS"
rename "%%a" "(%%c"
move /Y "%%d BIS" "%%b"
move /Y "(%%c" "%%b"
) else (
echo groupe non / album non
echo md "%%b"
echo rename "%%a" "(%%c"
echo move /Y "(%%c" "%%b"
)
)
)
)

) else (
echo pas touche : %%a
)
echo.
)
pause

Ya 3 conditions :
- L'une de trouver ](
- Ensuite de voir s'il existe déjà un dossier avec le même nom de groupe
- Puis de voir s'il existe déjà un dossier avec le même nom d'album (dans les dossiers existants et tous les sous dossiers).

Dans les deux dernières conditions, j'utilise la commande findstr pour savoir s'il existe des dossiers du même nom que les dossiers qui seront créés plus tard. Le problème c'est que je n'arrive pas à faire une recherche "exactement".
En imaginant qu'un dossier Do you compute [FR] existe déjà en vrai, et bien je n'arrive pas à le trouver via le programme. A cause de findstr. Evidemment c'est pareil pour le nom de l'album..
Ca m'énerve je ne suis pas loin du tout là !! ^^
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
Modifié par dubcek le 11/12/2013 à 10:32
essayer sans le /x du findstr
essayer set err2=!errorlevel! (ou err3) avec %errorlevel% plutot que !
for /d récupère les répertoires uniquement dans le répertoire courant, il ne descend pas l'arborescence
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
11 déc. 2013 à 11:16
Ben le pb c'est que quand j'essaye sans /x il trouve le dossier Do you compute [FR] ET aussi tous les dossiers avec un you, ou un Do, ou un compute.. Ca en fait un paquet quoi ah aha !
J'ai essayé %errorlevel% et du coup la condition est OUI tout le temps, il accepte tout... Ahem..

Ah oui effectivement for /d est embétant, ya pas de possibilité de vérifier les sous dossiers ?
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
11 déc. 2013 à 14:18
ou utiliser if exist, puisqu'on a le nom du sous-dossier
...
echo %%a | findstr /l "](" > NUL
set err=!errorlevel!
if !err! EQU 0 (
for /f "delims=( tokens=1,2" %%b in ("%%a") do (
set nom=%%b
if exist "!nom!" echo le sous dossier !nom! existe
......
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
11 déc. 2013 à 14:56
pour afficher tout les sous répertoires depuis là ou on est
for /R . %%a in (.) do @echo %%a
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 11/12/2013 à 23:35
Coool merci ! bon voilà finit !
C'est vraiment cool ça me permet de mettre un pied dans le DOS !
Voilà le pg tel qu'il est, si certains en ont besoin (ça m'étonnerait mais bon !) :
@echo off
setlocal enableDelayedExpansion

for /d %%a in (*.*) do (

echo %%a | findstr /l "](" > NUL
set err=!errorlevel!

if !err! EQU 0 (

for /f "delims=( tokens=1,2" %%b in ("%%a") do (
for /d %%d in (.) do (
set groupe=%%b
set album="(%%c"
set albumexistant=0

for /r %%e in (.) do (
if exist "!album!" set albumexistant=1
)

if exist "!groupe!" (
if !albumexistant! EQU 1 (
rename "%%a" "(%%c_BIS"
move /Y "(%%c_BIS" "%%b"
echo Album !album! renomme en (!album!_BIS et deplace dans Groupe !groupe!.
) else (
rename "%%a" "(%%c"
move /Y "(%%c" "%%b"
echo Album !album! deplace dans Groupe !groupe!.
)
) else (
md "%%b"
if !albumexistant! EQU 1 (
rename "%%a" "(%%c_BIS"
move /Y "(%%c_BIS" "%%b"
echo Album !album! renomme en (!album!_BIS et deplace dans nouveau Groupe !groupe!.
) else (
rename "%%a" "(%%c"
move /Y "(%%c" "%%b"
echo Album !album! deplace dans nouveau Groupe !groupe!.
)
)
)
)

)
echo.
)
pause
Encore Merci Dubcek, hyper sympa de ta part ! ^^
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 5/03/2016 à 10:55
Salut ! Je reviens ici, parce que j'aurais un autre fichier BAT à demander, j'avoue que je ne comprends pas bien du tout le langage, j'ai essayé mais sans grand succès.

Celui-ci est plus simple, j'ai pas mal de dossier qui arrivent comme ceci :
The Heliocentrics - From The Deep (2016)


Et je voudrais qu'ils soient renommés comme ceci :
The Heliocentrics [](2016) From The Deep


En gros il faut faire commencer par une condition :
SI (...) à la fin ET présence de " - " dans le nom du dossier

(...) veut dire une date entre parenthèses ! C'est pas forcément la même, la seule chose en commun étant qu'elle est composée de 4 chiffres entourée de parenthèses.
Si tout ce beau monde est réuni, on peut être sûrs que le script se déroulera bien.

Pour la procédure, il faut remplacer " - " par " []"+ la date entre parenthèses de la fin "(...)" en la déplaçant.

SI vous pouvez faire ce truc là, ce serait royal !
Merci à vous !

PS : Ah oui dans le programme du dessus, il met un message d'erreur dans la fenêtre de commande quand il ne reconnait pas un caractère, par exemple "&". C'est possible de faire qqh ? C'est pas bien grave hein ! ^^
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
7 mars 2016 à 09:12
il ne reconnait pas un caractère, par exemple "&".
essayer avec ^&

essayer
C:> dir /b
aaaa - bbbb (1984)
Heliocentrics - From The Deep (2016)

C:> ..\cc
move "aaaa - bbbb (1984)" "aaaa [](1984) bbbb "
move "Heliocentrics - From The Deep (2016)" "Heliocentrics [](2016) From The Deep "

C:> type..\cc.bat
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%a in ('dir /b') do (
set nom=%%a
for /F "delims=() tokens=1,2" %%b in ('echo !nom!') do (
set n2=%%b
set a=%%c
)
for /F "delims=- tokens=1,2" %%f in ('echo !n2!') do (
set n=%%f[]^(!a!^)%%g
set n=!n:"=!
echo move "!nom!" "!n!"
)
)
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
7 mars 2016 à 11:26
Salut dubcek ! Merci de m'aider une nouvelle fois!
C'est fou ce langage, je ne comprends pas grand chose... Ah aha

essayer avec ^&
Donc c'est pour le 1er programme que tu avais écrit. En gros il met un message d'erreur dans la fenêtre de commande si le texte du dossier contient le caractère '&'
Par exemple si tu crées un nouveau dossier
texte1 & texte2
, il retourne un message d'erreur
'texte2' n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.

Ce doit être une histoire d'encodage de caractères...
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
7 mars 2016 à 11:45
Sinon pour le nouveau programme :
Je ne t'ai pas dit mais cela ne doit fonctionner que sur les dossiers.
Et aussi il faut déplacer les caractères seulement si
- Le nom de dossier analysé ne contient pas déjà ']('...
- Le nom de dossier contient les caractères '(...)' ET ' - '
- Les parenthèses '(...)' doivent être à la fin

Pour l'instant il renomme tous les dossiers avec []() à la fin. Et je pense que les espaces avant et après le '-' sont importants, il arrive de temps en temps que les dossiers contiennent des '-' seuls sans les espaces autour.

Pour l'instant je suis arrivé là :
@echo off
setlocal enabledelayedexpansion
for /d %%a in (*.*) do (
echo %%a | findstr /l "](" > NUL
set err=!errorlevel!
echo !err!
if !err! EQU 1 (
set nom=%%a
for /F "delims=() tokens=1,2" %%b in ('echo !nom!') do (
set n2=%%b
set a=%%c
)
for /F "delims=- tokens=1,2" %%f in ('echo !n2!') do (
set n=%%f[]^(!a!^)%%g
set n=!n:"=!
echo move "!nom!" "!n!"
)
)
)


Mais je suis un peu bloqué, je veux bien voir comment tu fais le reste ! ^^
Voici une série de dossiers à tester, avec 2 ou 3 pièges ^^ :
Ecorce [FR](2014) Void
(il ne doit pas toucher à ce dossier, il contient déjà
](
)
Mermonte [FR]
(il ne doit pas y toucher non plus, il ne contient ni
 - 
ni
(...)
)
Windows
(il ne doit pas y toucher non plus)
My sleeping doll - (2016) Inner waves
(il ne doit pas y toucher non plus, il contient
 - 
et
(...)
mais ce dernier n'est pas à la fin)
Korkoj & Friends - Party (2012)
(renommé en
Korkoj & Friends [](2012) Party
)
Silent (T)error - Démo (2016)
(renommé en
Silent (T)error [](2016) Démo
)
Rabih Abou-Khalil - Discography (2000)
(renommé en
Rabih Abou-Khalil [](2000) Discography
)

Merci encore à toi, c'est vraiment sympa !
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
7 mars 2016 à 12:24
Ce doit être une histoire d'encodage de caractères...
& est un séparateur de commande, ill ne faut pas l'utiliser pour un nom de fichier
ne pas non plus utiliser <>|\ etc
C:> echo aaa&echo bbb
aaa
bbb

C:>
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020 > dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024
14 mars 2016 à 21:52
Ok donc mieux vaut ne pas utiliser le & ! Merci
0
Matt 666 Messages postés 38 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 28 octobre 2020
Modifié par Matt 666 le 19/03/2016 à 13:06
Salut dubcek!

Bon je pense avoir fini, dis moi si tu trouves le code satisfaisant, et si tu ne trouves pas des choses inélégantes, ou bizarres !

Merci encore !

@echo off
setlocal enabledelayedexpansion
for /d %%a in (*.*) do (
echo %%a | findstr /l "](" > NUL
set err=!errorlevel!
if !err! EQU 1 (
set nom=%%a
set part=!nom:~-6!

if "!part:~-1!" EQU ")" (
if "!part:~0,1!" EQU "(" (
for /F "delims=() tokens=1,2" %%b in ('echo !nom!') do (
set n2=%%b
set a=%%c
)
for /F "delims=- tokens=1,2" %%f in ('echo !n2!') do (
set n=%%f[]^(!a!^)%%g
set n=!n:"=!
move "!nom!" "!n!"
)
)
)
)
)
pause
0