Renommer des fichiers d'un dossier

Résolu
Cdrx34 -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai récupéré un batch pour un renommage de fichier en intégrant le nom du dossier mère.
Le batch fonctionne très bien mais j'aimerai ajouter dans le renommage les nom des dossiers mère.

exemple :
Arborésence : Dossier1 > Dossier2 > Dossier3 > fichier
Renommage : Dossier1_Dossier2_Dossier3_fichier

Ci-dessous le code que j'ai :

@echo off
Title Renommage des fichiers dans un dossier avec son prefixe
for %%I in (.) do set "CurrDirName=%%~nxI"
for /f "delims=" %%f in ('Dir /A-D /b') do (
If "%%f" NEQ "%~nx0" (
REN "%%f" "%CurrDirName%_%%f"
)
)
pause

Merci d'avance de vos retours
Cédric

2 réponses

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonjour,

    C'est très simple :

    @echo off
    setlocal enableDelayedExpansion
    Title Renommage des nouveaux fichiers dans un dossier avec son prefixe

    for /f "delims=" %%G in ('2^>nul dir /a-d /b') do (
    set nouveau=%%~pnxG
    if not "%%~G"=="%~nx0" (
    set nouveau=!nouveau:\=_!
    ren "%%~fG" "!nouveau:~1!"
    )
    )
    pause


    0
    1. Cdrx34
       
      Merci, ton code fonctionne super bien mais ça reprend toute l'arborescence des dossiers.
      En fait j'aurais juste besoin de remonter de 5 dossiers pas plus.
      La solution est peut être plus compliquée du coup.
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > Cdrx34
         
        Ca n'est pas beaucoup plus compliqué, ce qui est compliqué à gérer c'est le chat qui saute sur le clavier ;)

        @echo off
        setlocal enableDelayedExpansion
        Title Renommage des nouveaux fichiers dans un dossier avec son prefixe

        pushd "..\..\..\..\.."
        set "racine=%CD%"
        popd

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

        set "nouveau=%%~fG"
        if not "%%~G"=="%~nx0" (
        set "nouveau=!nouveau:%racine%=!"
        if "!nouveau:~0,1!"=="\" (set nouveau=!nouveau:~1!)
        set nouveau=!nouveau:\=_!
        ren "%%~fG" "!nouveau!"
        )
        )
        pause
        0
  2. Cdrx34
     
    Au top merci c'est exactement le résultat qu'il me faut.
    Il faut que je me forme sur le batch, cela pourrait résoudre pas mal de chose pour mon boulot.

    Encore merci.
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      De rien, à bientôt peut-être.
      0