Renommer des fichiers d'un dossier

Résolu/Fermé
Cdrx34 - 14 janv. 2020 à 17:37
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - 14 janv. 2020 à 21:49
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

barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 917
Modifié le 14 janv. 2020 à 19:53
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
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
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 917 > Cdrx34
Modifié le 14 janv. 2020 à 21:29
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
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
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 917
14 janv. 2020 à 21:49
De rien, à bientôt peut-être.
0