Renommer des fichiers avec un fichier script Batch

[Résolu/Fermé]
Signaler
Messages postés
63
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2019
-
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
-
Bonjour,

je suis sous Windows 10 et souhaite renommer des fichiers de musique qui sont de la forme "01. MonMorceau1.mp3", "02. MonMorceau2.mp3", etc... en "MonMorceau1.mp3", "MonMorceau2.mp3", etc... .
J'ai suivi des tutos sur les fichiers Batch et j'en suis arrivé à écrire le code suivant :

FOR /R %%G IN (*.mp3) DO (
SETLOCAL
SET "name=%%~nG"
SET "shortName=%name:~4%"
SET "ext=%%~xG"
SET "newName=%shortName%%ext%"
SET "fullName=%%G"
REN "%fullName%" "%newName%"
ENDLOCAL
)

Cependant, cela ne marche pas du tout. Lorsque je me place dans le dossier D:\Users\USERNAME\MYDIR avec dans l'invite de commande et que j’exécute mon ficher .bat, je vois apparaitre lors d'une boucle :

D:\Users\USERNAME\MYDIR>(
SETLOCAL
SET "name=01. MonMorceau1.mp3""
SET "shortName=~4,0"
SET "ext=.mp3"
SET "newName="
SET "fullName=D:\Users\USERNAME\MYDIR\01. MonMorceau1.mp3"
REN "" ""
ENDLOCAL
)
Le fichier spécifié est introuvable.

Je ne comprends pas pourquoi les variables name et newName ont l'air vides et pourquoi fullName et newName ne sont pas utilisées.
Merci d'avance.

2 réponses

Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
995
Bonjour,

Le problème vient de l'utilisation des guillemets. Il ne faut pas inclure la première partie de l'expression, mais seulement la valeur :
SET name="%%~nG" 


Xavier
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
63
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2019
>
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021

Désolé, toujours pas :

D:\Users\USERNAME\MYDIR>(
SETLOCAL
SET name="01. MonMorceau1"
SET shortName="~4"
SET ext=".mp3"
SET newName=""
SET fullName="D:\Users\USERNAME\MYDIR\01. MonMorceau1.mp3"
REN "" ""
ENDLOCAL
)
Le fichier spécifié est introuvable.
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
995
Bonjour,

Regarde peut-être du côté de ENABLEDELAYEDEXPANSION (je te laisse rechercher ce terme)

Xavier
Messages postés
63
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2019
>
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021

Aaaaaahhhhh ça marche !!
C’était le mot magique que je ne connaissais pas => https://openclassrooms.com/fr/courses/1945566-automatisez-vos-taches-avec-batch/2831866-lexpansion-retardee

Du coup, j'ai mis SETLOCAL ENABLEDELAYEDEXPANSION et c'est bon !

Merci bien !
Messages postés
63
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2019

(Comment met-on votre dernier message que c'est la réponse que je cherchais ?)
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
995
On ne peut pas cibler un message précis, mais si tu cliques sur "Merci" en haut à gauche de mon premier message, on saura au moins que la réponse finale s'y trouve :)
(Ton lien est super clair, merci !)
Messages postés
16131
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 juillet 2021
724
Messages postés
63
Date d'inscription
mardi 3 juillet 2012
Statut
Membre
Dernière intervention
22 janvier 2019

Merci, c'est une solution en effet, mais j'aimerais comprendre avant tout le soucis que je rencontre avec mon script Batch, juste histoire de m'améliorer en code.
Surtout que j'aimerais adapter cette façon de modifier à plein d'autres sauces.
Messages postés
16131
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 juillet 2021
724
Je comprends, mais ne t'aiderai pas en batch