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
3604
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 juillet 2020
-
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
3604
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 juillet 2020
959
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 59593 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
3604
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 juillet 2020

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
3604
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 juillet 2020
959
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
3604
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 juillet 2020

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
3604
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 juillet 2020
959
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
14492
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 juillet 2020
555
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
14492
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 juillet 2020
555
Je comprends, mais ne t'aiderai pas en batch