Renommer des fichiers d'un dossier [Résolu]

Signaler
-
barnabe0057
Messages postés
12467
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 janvier 2020
-
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

Messages postés
12467
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 janvier 2020
2 599
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



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
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.
barnabe0057
Messages postés
12467
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 janvier 2020
2 599 > 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
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.
barnabe0057
Messages postés
12467
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 janvier 2020
2 599
De rien, à bientôt peut-être.