Bonjour à tous,
J'ai besoin de réaliser un batch qui me permette de renommer un ensemble de fichiers. Le problème c'est que le nouveau de nom de chaque fichier depend d'un élément contenu dans le fichier lui même.
Mes fichiers sont des fichiers texte ASCII
ils contiennent les éléments suivants :
REGION : 09015 FRANCE LEVEL 1 FR ANALYSIS REPORT CURRENT-DATE: 02DEC08
MEGAZONE : 07112 FRANCE MEGAZONE REPORTING PERIOD: NOV08
OWN: 09478 CATI LIC FR AS OF: 01DEC08
DISTRICT : 08981 PARIS LV3FR PAGE: 1
STATION : 01851 ISSY DT FR
Ce fichier s'appelle admettons P1J211 (sans extension) et je souhaite le renommer en 01851.txt, correspondant au paramètre STATION contenu dans mon fichier.
Il faut donc que je récupère la valeur de STATION, puis renommer mon fichier avec cette valeur.
J'ai donc X fichiers contenant chacun dans le texte la mention :
STATION : XXXXX
et je souhaite renommer chaque fichier en XXXXX.txt
En m'aidant des précieuses informations trouvées sur le forum, je suis arrivé à ce script là :
@echo off
dir /B /A-D | find "." /V > liste.log
for /f "tokens=1 delims=." %%i in (liste.log) do (
set nomfichier=%%i
echo %nomfichier%
type %nomfichier% | find "STATION" > var.tmp
for /f "tokens=3 delims= " %%a in (var.tmp) do (
set station=%%a
)
ren "%nomfichier%" "%station%.txt"
del var.tmp
)
del liste.log
Mais cela ne renomme qu'un seul de mes fichiers et non tous.
Je suis un peu bloqué.....
Quelqu'un a-t-il une solution à me proposer ?
Merci d'avance.
Renommer une serie de fichier en fonction de leur contenu
Modérateur : WIN32-[GG]
Re: Renommer une serie de fichier en fonction de leur contenu
Bonjour,
Devrais fonctionner:
Batch_Man
Devrais fonctionner:
Code : Tout sélectionner
@echo off
for /f "tokens=*" %%a in ('dir /B /A-D ^| find "." /V') do (
for /f "tokens=2 delims=: " %%i in ('type %%a ^| Find /i "station"') do (
ren "%%a" "%%i.txt")
)
pause
Re: Renommer une serie de fichier en fonction de leur contenu
Merci Batch Man !
Cela fonctionne ! Par contre, j'ai pour chaque fichier renommé un message d'erreur : "Le fichier spécifié est introuvable", je ne comprends pas bien d'où cela vient...
Cela fonctionne ! Par contre, j'ai pour chaque fichier renommé un message d'erreur : "Le fichier spécifié est introuvable", je ne comprends pas bien d'où cela vient...
Re: Renommer une serie de fichier en fonction de leur contenu
Bonjour,
C'est quand il ne trouve pas station, essaye ceci:
C'est quand il ne trouve pas station, essaye ceci:
Code : Tout sélectionner
@echo off
for /f "tokens=*" %%a in ('dir /B /A-D ^| find "." /V') do (
for /f "tokens=2 delims=: " %%i in ('type %%a ^| Find /i "station"') do (
ren "%%a" "%%i.txt" 2>NUL)
)
pause