Renommer des chansons

Résolu/Fermé
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 - 13 nov. 2019 à 22:23
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 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
A voir également:

2 réponses

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907
Modifié le 16 nov. 2019 à 12:40
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.

1
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
16 nov. 2019 à 23:41
Bonjour

Merci beaucoup barnabe0057
Grace à toi je n'ai pas a faire mon ancien script pour tous les dossiers.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907 > DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020
16 nov. 2019 à 23:45
De rien ;)
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 907
16 nov. 2019 à 01:02
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.

0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
16 nov. 2019 à 02:02
Bonjour barnabe0057

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

@+
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
16 nov. 2019 à 11:26
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"
0