Page 1 sur 1

Renommer une serie de fichier en fonction de leur contenu

Posté : 17 févr. 2009 18:33
par atlas
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.

Re: Renommer une serie de fichier en fonction de leur contenu

Posté : 17 févr. 2009 23:07
par Batch_Man
Bonjour,

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
Batch_Man

Re: Renommer une serie de fichier en fonction de leur contenu

Posté : 18 févr. 2009 11:56
par atlas
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...

Re: Renommer une serie de fichier en fonction de leur contenu

Posté : 18 févr. 2009 20:01
par Batch_Man
Bonjour,

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