Renommer des chansons

Résolu
DelNC Messages postés 2360 Statut Membre -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
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. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour

      Merci beaucoup barnabe0057
      Grace à toi je n'ai pas a faire mon ancien script pour tous les dossiers.
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > DelNC Messages postés 2360 Statut Membre
         
        De rien ;)
        0
  2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour barnabe0057

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

      @+
      0
    2. DelNC Messages postés 2360 Statut Membre 2 010
       
      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