Renommer une serie de fichier en fonction de leur contenu

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
atlas
Batcheur occasionnel
Messages : 2
Enregistré le : 17 févr. 2009 18:23

Renommer une serie de fichier en fonction de leur contenu

Message 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.
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

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

Message 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
atlas
Batcheur occasionnel
Messages : 2
Enregistré le : 17 févr. 2009 18:23

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

Message 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...
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

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

Message 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
Répondre