Modifier variables dans un fichier [Résolu]

Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
-
Bonjour,
Pour davantage de clarté, j'ouvre ce nouveau sujet.
Il s'agit donc de modifier les expressions suivantes dans un fichier:
&(x_numbr) par &NUM
&(x_large_caste) par &ESPA
&(x_sms2) par &YEAR

Voici un exemple de fichier (celui peut être composé de n lignes):
ACTION NO='TECH',
INTITULE='TEST DU PROG',
ARMA='CAT',
RADIO='S',
PROG='D:\toto\bateau\import\&(x_numbr).cmd',
FORM='S',
COMPTE='1024',
CRYPTE='B',
RATIO='D:\arborescence\&(x_large_caste)_&(x_sms2).dos',
BLAZON='S',
VALEUR='1024',
NTYPO='B',
ZIPPED='U',
CIBLE='REPLACE'
ACTION NO='RELANCE',
INTITULE='chercher le bon numero',
ARMA='CAT',
RADIO='S',
PROG='D:\tableau\bord\atelier\armure\&(x_numbr).bat',
FORM='S',
COMPTE='1024',
CRYPTE='B',
RATIO='D:\depot\FORUM\label\&(x_sms2).&(x_large_caste)',
ZIPPED='U',
CIBLE='REPLACE'
ACTION NO='COPIER',
INTITULE='Atelier a programmer',
ARMA='CAT',
RADIO='F',
PROG='D:\lieu\rebond\xpr&(x_numbr).bat',
FORM='F',
COMPTE='250',
CRYPTE='A',
RATIO='D:\rue\annonce\tour\&(x_sms2).&(x_large_caste)_ARCHI',
ZIPPED='U',
CIBLE='REPLACE'
etc...


Du coup, on doit aboutir à ce résultat:
ACTION NO='TECH',
INTITULE='TEST DU PROG',
ARMA='CAT',
RADIO='S',
PROG='D:\toto\bateau\import\&NUM.cmd',
FORM='S',
COMPTE='1024',
CRYPTE='B',
RATIO='D:\arborescence\&ESPA_&YEAR.dos',
BLAZON='S',
VALEUR='1024',
etc...


Bon je cherche, je cherche, mais je ne trouve pas comment effectuer cette modification sur un fichier qui compte une centaine de lignes.
SI vous avez une idée, je suis preneur ! :-)
Merci beaucoup pour votre aide
Ka-El
Afficher la suite 

3 réponses

Messages postés
12334
Date d'inscription
lundi 2 mars 2009
Statut
Non membre
Dernière intervention
18 août 2019
2129
0
Merci
Bonjour,

Ca devrait être quelque chose comme ça :

@echo off
Setlocal EnableExtensions EnableDelayedExpansion

set $fichier=fichier.txt
if exist output.txt (del output.txt)

for /f "tokens=1,* delims==" %%A in (%$fichier%) do (

set ligne=%%B

if "%%~A"=="RATIO" (
set ligne=!ligne:^(x_large_caste^)=ESPA!
set ligne=!ligne:^(x_sms2^)=YEAR!
echo %%A=!ligne!
)

if "%%~A"=="PROG" (
set ligne=!ligne:^(x_numbr^)=NUM!
echo %%A=!ligne!
)

if not "%%~A"=="RATIO" (if not "%%~A"=="PROG" (echo %%A=%%B))

) >>output.txt

pause
exit



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Commenter la réponse de barnabe0057
Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
0
Merci
Salut barnabe0057,
Quel talent ! Ton code fonctionne du tonnerre ! :-)
Merci énormément ! Depuis hier, tu m'as fait gagné au moins 3 jours de travail :-)

Ceci dit, il me reste encore un petit point à corriger.
En fait, parfois j'ai aussi la ligne suivante qui apparait:
RATIO='\',

Est-ce que dans ton code, on peut ajouter une ligne qui va supprimer le "\" ?
et donc, on se retrouvera simplement avec l'expression suivante:
RATIO='',

Merci encore pour ton aide !
barnabe0057
Messages postés
12334
Date d'inscription
lundi 2 mars 2009
Statut
Non membre
Dernière intervention
18 août 2019
2129 -
Monsieur est servi :

@echo off
Setlocal EnableExtensions EnableDelayedExpansion

set $fichier=fichier.txt

if exist output.txt (del output.txt)

for /f "tokens=1,* delims==" %%A in (%$fichier%) do (

set ligne=%%B

if "%%~A"=="RATIO" (if "%%~B"=="'\'," (set ligne='',) else (
set ligne=!ligne:^(x_large_caste^)=ESPA!
set ligne=!ligne:^(x_sms2^)=YEAR!
)
)

if "%%~A"=="PROG" (set ligne=!ligne:^(x_numbr^)=NUM!)

echo %%A=!ligne!

) >>output.txt

pause
exit

J'ai un peu simplifié car j'avais 2-3 ECHO qui se répétait, c'est un peu plus lisible maintenant.
Commenter la réponse de Ka-El
Messages postés
195
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 août 2019
0
Merci
Salut Barnabe,
Encore une fois, je salut ton efficacité.
Mon script fonctionne mieux que je le pensais !
Encore merci pour ton aide précieuse
@+ ;-)
barnabe0057
Messages postés
12334
Date d'inscription
lundi 2 mars 2009
Statut
Non membre
Dernière intervention
18 août 2019
2129 -
Tant mieux si ça fonctionne comme tu veux.

Bonne continuation et à bientôt peut-être.
Commenter la réponse de Ka-El