Renommer des chansons [Résolu/Fermé]

Signaler
Messages postés
2231
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
22 février 2020
-
Messages postés
12910
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
2 décembre 2020
-
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

2 réponses

Messages postés
12910
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
2 décembre 2020
3 857
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.”
1
Merci

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

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
2231
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
22 février 2020
1 649
Bonjour

Merci beaucoup barnabe0057
Grace à toi je n'ai pas a faire mon ancien script pour tous les dossiers.
Messages postés
12910
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
2 décembre 2020
3 857 >
Messages postés
2231
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
22 février 2020

De rien ;)
Messages postés
12910
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
2 décembre 2020
3 857
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.

Messages postés
2231
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
22 février 2020
1 649
Bonjour barnabe0057

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

@+
Messages postés
2231
Date d'inscription
samedi 25 octobre 2014
Statut
Membre
Dernière intervention
22 février 2020
1 649
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"