Modifier variables dans un fichier
Résolu
Ka-El
Messages postés
260
Date d'inscription
Statut
Membre
Dernière intervention
-
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
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):
Du coup, on doit aboutir à ce résultat:
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
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:
- Modifier variables dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Modifier dns - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
3 réponses
Bonjour,
Ca devrait être quelque chose comme ça :
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
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 !
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 !
Monsieur est servi :
J'ai un peu simplifié car j'avais 2-3 ECHO qui se répétait, c'est un peu plus lisible maintenant.
@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.