Renommer des chansons

Résolu
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

  1. 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. Bonjour

      Merci beaucoup barnabe0057
      Grace à toi je n'ai pas a faire mon ancien script pour tous les dossiers.
  2. 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.

    1. Bonjour barnabe0057

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

      @+
    2. 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"