Renommer des chansons [Résolu]

Messages postés
2190
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
30 novembre 2019
- - Dernière réponse : barnabe0057
Messages postés
12428
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
5 décembre 2019
- 16 nov. 2019 à 23:45
Bonjour à tous & toutes

J'ai retrouvé des dossiers de chansons.
Elles sont classées par artistes.
Dans le nom des chansons, il y a bien le titre mais pas l'artiste.

J'essaye de faire en sorte que les chansons soient nommées comme ceci:
artiste : titre

J'ai déjà fait un script en .bat qui ajoute le nom de l'artiste mais je suis obligée de la mettre en dur dans le script

exemple
@echo off
setlocal enabledelayedexpansion

chcp 1252
for /r "C:\Users\Delphine\Music\Anglais\U2" %%a in (*.mp3) do (
set "file=U2 - %%~nxa"
move /y "%%~a" "%%~dpa!file!"
)
pause


Je n'arrive pas à trouver comment récupérer la variable du dossier.

Si vous avez des pistes à me donner, ça serait sympa
Je vous remercie d'avance d l'aide que vous m'apporteraz
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
12428
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
5 décembre 2019
2438
1
Merci
Voilà le script complet :
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
chcp 28591 >nul

set cible=%USERPROFILE%\Music

cd /d %cible% || exit /b 1

for /f "delims=" %%A in ('2^>nul dir /b /s /a-d') do (

echo. & call :fonction "%%~pA"
ren "%%~A" "!artiste! - %%~nxA" >nul && echo ### %%~nxA ==^>^> !artiste! - %%~nxA

)

pause
exit /b 0


:fonction

set "chemin=%~1"

for /L %%E in (2,1,255) do (

set "dossier=!chemin:~-%%E!"
if "!dossier:~0,1!"=="\" (set "artiste=!dossier:\=!" & goto :eof)

)

goto :eof

Tu n'as rien à modifier, juste à copier-coller.
Tu peux changer la variable cible si tu veux traiter un autre dossier.


“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 63468 internautes nous ont dit merci ce mois-ci

DelNC
Messages postés
2190
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
30 novembre 2019
1095 -
Bonjour

Merci beaucoup barnabe0057
Grace à toi je n'ai pas a faire mon ancien script pour tous les dossiers.
barnabe0057
Messages postés
12428
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
5 décembre 2019
2438 > DelNC
Messages postés
2190
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
30 novembre 2019
-
De rien ;)
Commenter la réponse de barnabe0057
Messages postés
12428
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
5 décembre 2019
2438
0
Merci
Bonjour,

Voilà une partie de la solution :

@echo off
Setlocal EnableExtensions EnableDelayedExpansion

set cible=%USERPROFILE%\Music

cd /d %cible%

for /f "delims=" %%A in ('dir /b /s /a-d "*.mp3"') do (

call :fonction "%%~pA"
echo %%~nxA ### !artiste! #

)

pause
exit


:fonction

set chemin=%~1

for /L %%E in (2,1,255) do (

set dossier=!chemin:~-%%E!
set delimiteur=!dossier:~0,1!
if "!delimiteur!"=="\" (
set artiste=!dossier:~1!
set artiste=!artiste:\=!
goto :eof
)

)

goto :eof


Le script liste tous les fichiers dans tous les sous-dossiers, et la fonction récupère le nom du dossier parent de chaque fichier.

Tu n'as plus qu'à rajouter une ligne pour renommer le fichier à ta guise.

DelNC
Messages postés
2190
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
30 novembre 2019
1095 -
Bonjour barnabe0057

Merci
Je vais essayer de renommer les chansons comme je veux.

@+
DelNC
Messages postés
2190
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
30 novembre 2019
1095 -
Je ne comprends pas trop ou je dois mettre ma ligne de code
Je fais faire des tests sur une partie des chansons pour commencer

Il me semble qu'elle devrait être de ce style
set "cible=artist - %%~nxa"
Commenter la réponse de barnabe0057