Modifier variables dans un fichier

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - Modifié le 30 juil. 2019 à 13:42
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 31 juil. 2019 à 10:48
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
A voir également:

3 réponses

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 30 juil. 2019 à 14:35
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


0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
30 juil. 2019 à 15:47
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 !
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 30 juil. 2019 à 16:13
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.
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
31 juil. 2019 à 10:45
Salut Barnabe,
Encore une fois, je salut ton efficacité.
Mon script fonctionne mieux que je le pensais !
Encore merci pour ton aide précieuse
@+ ;-)
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
31 juil. 2019 à 10:48
Tant mieux si ça fonctionne comme tu veux.

Bonne continuation et à bientôt peut-être.
0