recupérer un nombre dans un fichier texte grace a un Bat

recupérer un nombre dans un fichier texte grace a un Bat - Shell/Batch - Programmation

Marsh Posté le 23-08-2007 à 18:34:53    

slt
voila j'ai un fichier "Scenery.cfg" qui est composé de plusieurs "paragraphes" de ce genre :
 
[Area.XXX]
Title=YYYY
Layer=XXX
Active=TRUE
Required=FALSE
Local=Addon Scenery\YYYY
Remote=
 
 
Mon bute est grace a un fichier bat d'insérer après le dernier "paragraphe" un saut de ligne puis un autre paragraphe, j'aurais donc :
 
[Area.XXX]
Title=YYYY
Layer=XXX
Active=TRUE
Required=FALSE
Local=Addon Scenery\ZZZZZ
Remote=
 
[Area.XXX] <----- Ici je veux remplacer mes XXX par XXX + 1 c'est a dire que si j'ai 122 j'aurais 123
Title=abcdef
Layer=XX <----- Ici je veux faire la même chose
Active=TRUE
Required=FALSE
Local=Addon Scenery\abcdefghi
Remote=
 
Qu'elles commandes dois je utiliser pour "lire" cette ligne particulière (la dernière ligne "[Area.XXX]" du fichier texte) puis pour copier la valeur du nombre XXX et l'incémenter de 1 pour la réécrire par la suite ds mon paragraphe ?
 
Je vous remercie d'avance pour votre aide
Newoobs

Reply

Marsh Posté le 23-08-2007 à 18:34:53   

Reply

Marsh Posté le 23-08-2007 à 19:01:00    

for /f "tokens=2 delims=.]" %%a in ('type Scenery.cfg ^| findstr "Area"') do set var=%%a
set /a var+=1
 
echo.>> Scenery.cfg
echo [Area.%var%]>> Scenery.cfg
echo Title=absdef>> Scenery.cfg
echo Layer=%var%>> Scenery.cfg
echo Active=TRUE>> Scenery.cfg
echo Required=FALSE>> Scenery.cfg
echo Local=Addon Scenery\abcdefghi>> Scenery.cfg
echo Remote=>> Scenery.cfg

Reply

Marsh Posté le 23-08-2007 à 19:26:00    

slt
Merci pour ton aide
Cela fonctione sauf pour la ligne "echo Layer=%var%>> Scenery.cfg "
en effet, elle n'apparait pas dans mon fichier Scenery.cfg
Vois tu d'ou peut venir le probleme ?
Pour savoir, que signifie "tokens=2" ?
 
Merci
Newoobs

Reply

Marsh Posté le 23-08-2007 à 19:33:53    

echo Layer=%var% >> Scenery.cfg
 
Juste un espace après %var%
Pour des explications sur les commandes tu tapes : for /?
dans une invite de commande et t'as l'aide.
 
En gros, ('type Scenery.cfg ^| findstr "Area"') sort la ligne comportant Area, donc : [Area.XXX]
et la commande FOR pose comme delimiteurs le . et le ] et donc TOKENS sert a selectionné des parties de cette ligne.
Si on aurait mit TOKENS=1 il nous aurait sortie : Area
Si on aurait mit TOKENS=1,2 dans la variable %%a on aurait Area et dans %%b on aurait XXX
 
Voila j'sais pas si j'explique bien :x

Reply

Marsh Posté le 23-08-2007 à 19:38:16    

slt
merci effectivement cela fonctionne. Merci pour tes explications, j'ai compris a peu pres comment cela fonctionne
 
A++++
newoobs

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed