Changer lignes et expressions dans un fichier.txt
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
-
26 juil. 2019 à 14:40
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 à 11:30
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 à 11:30
A voir également:
- Changer lignes et expressions dans un fichier.txt
- Changer dns - Guide
- Piratage facebook changer mot de passe - Guide
- Changer clavier qwerty en azerty - Guide
- Changer police facebook - Guide
- Aller à la ligne dans une cellule excel - Guide
5 réponses
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
26 juil. 2019 à 16:27
26 juil. 2019 à 16:27
De mon côté, je parviens au résultat ci-dessous avec le programme suivant:
je conserve toutes mes lignes, mais au niveau de celles qui sont à remplacer, ça me donne un résultat de ce type:
M=TSEXE=MASCULIN=M
J'imagine que c'est le "=" dans la variable qui est mal interprété...
pour la 1ère partie de mon problème, c'est donc pas très concluant.
Un peu d'aide svp ? :-)
@echo off&cls
set $fichier=fichier.txt
set $chaine=TSEXE=M
set $remplace=TSEXE=MASCULIN
if exist output.txt del output.txt
setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('type %$fichier%') do (
set $ligne=%%a
set $ligne=!$ligne:%$chaine%=%$remplace%!
echo !$ligne!>>output.txt)
echo OK
je conserve toutes mes lignes, mais au niveau de celles qui sont à remplacer, ça me donne un résultat de ce type:
M=TSEXE=MASCULIN=M
J'imagine que c'est le "=" dans la variable qui est mal interprété...
pour la 1ère partie de mon problème, c'est donc pas très concluant.
Un peu d'aide svp ? :-)
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 907
Modifié le 27 juil. 2019 à 02:20
Modifié le 27 juil. 2019 à 02:20
Bonjour,
Voilà pour la première partie de ton problème :
Voilà pour la première partie de ton problème :
@echo off
set $fichier=fichier.txt
if exist output.txt (del output.txt)
for /f "tokens=1,* delims==" %%A in (%$fichier%) do (
if "%%~A"=="TSEXE" (if "%%~B"=="M," (echo %%A=MASCULIN,))
if "%%~A"=="TSEXE" (if "%%~B"=="F," (echo %%A=FEMININ,)) else (echo %%A=%%B)
) >>output.txt
pause
exit
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 907
Modifié le 27 juil. 2019 à 02:41
Modifié le 27 juil. 2019 à 02:41
Voilà pour la première et la deuxième partie du problème :
@echo off
set $fichier=fichier.txt
set $site=Metz
set $topo=Je sais pas
if exist output.txt (del output.txt)
for /f "tokens=1,2,* delims==&" %%A in (%$fichier%) do (
if "%%~A"=="OBJET" (if "%%~B"=="D:\import\BALLON\" (echo %%A=%%B%$site%.%$topo%))
if "%%~A"=="TSEXE" (if "%%~B"=="M," (echo %%A=MASCULIN,))
if "%%~A"=="TSEXE" (if "%%~B"=="F," (echo %%A=FEMININ,))
if not "%%~A"=="OBJET" (if not "%%~A"=="TSEXE" (echo %%A=%%B))
) >>output.txt
pause
exit
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
29 juil. 2019 à 12:38
29 juil. 2019 à 12:38
Bonjour et merci barnabe0057 pour ta contribution.
Ton code fonctionne plutôt pas mal.
Mais il y a néanmoins un petit bémol, en effet dans le fichier output.txt pour la ligne "TSEXE=M", je retrouve deux lignes:
"TSEXE=M, " et "TSEXE=MASCULIN"
alors que normalement, je ne devrais retrouver que "TSEXE=MASCULIN,"
Ce qui est bizarre, c'est que pour "TSEXE=F, ", je me retrouve bien qu'avec une seule ligne correctement modifiée:
"TSEXE=FEMININ,"
As-tu une idée pourquoi on obtient ce résultat ?
Ceci dit, on est pas loin de ce que j'attends et je t'en remercie déjà :-)
Ka-El
Ton code fonctionne plutôt pas mal.
Mais il y a néanmoins un petit bémol, en effet dans le fichier output.txt pour la ligne "TSEXE=M", je retrouve deux lignes:
"TSEXE=M, " et "TSEXE=MASCULIN"
alors que normalement, je ne devrais retrouver que "TSEXE=MASCULIN,"
Ce qui est bizarre, c'est que pour "TSEXE=F, ", je me retrouve bien qu'avec une seule ligne correctement modifiée:
"TSEXE=FEMININ,"
As-tu une idée pourquoi on obtient ce résultat ?
Ceci dit, on est pas loin de ce que j'attends et je t'en remercie déjà :-)
Ka-El
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 907
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
29 juil. 2019 à 12:43
29 juil. 2019 à 12:43
Je n'ai pas ce problème avec mon fichier de test.
Il faudrait que tu me transmettes ton fichier si tu veux que je puisse trouver une solution.
Il faudrait que tu me transmettes ton fichier si tu veux que je puisse trouver une solution.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
29 juil. 2019 à 12:54
29 juil. 2019 à 12:54
J'ai l'impression que j'ai un problème pour envoyer un mp ...
As-tu reçu quelquechose ?
As-tu reçu quelquechose ?
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 907
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
29 juil. 2019 à 13:01
29 juil. 2019 à 13:01
Non
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
29 juil. 2019 à 13:08
29 juil. 2019 à 13:08
Ah ! cette fois, il est parti :-)
merci pour ton aide
merci pour ton aide
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
29 juil. 2019 à 14:16
29 juil. 2019 à 14:16
Avec la correction fournie par Barnabe0057 (merci encore !), je n'ai plus le problème évoqué précédemment.
Voici le code:
En revanche, j'ai omis de précisé que les expressions peuvent être précédées par des arborescences différentes.
par exemple:
OBJET=D:\import\BALLON\&(lieu).&(raison),
OBJET=C:\toto\bateau\avions\&(lieu).&(raison),
OBJET=C:\source\&(lieu).&(raison),
etc...
Et là forcément il n'est plus question de faire une recherche cadrée sur une arborescence précise puisque celle-ci est susceptible de prendre des formes multiples.
Merci d'avance pour votre aide
Voici le code:
@echo off
set $fichier=fichier.txt
set $site=Metz
set $topo=Je sais pas
if exist output.txt (del output.txt)
for /f "tokens=1,2,* delims==&" %%A in (%$fichier%) do (
if "%%~A"=="FNAME" (if "%%~B"=="D:\import\REFBIP\" (echo %%A=%%B%$site%.%$topo%) else (echo %%A=%%B))
if "%%~A"=="FRECFM" (if "%%~B"=="S," (echo %%A=MASCULIN,))
if "%%~A"=="FRECFM" (if "%%~B"=="F," (echo %%A=FEMININ,))
if not "%%~A"=="FNAME" (if not "%%~A"=="FRECFM" (echo %%A=%%B))
) >>output.txt
pause
exit
En revanche, j'ai omis de précisé que les expressions peuvent être précédées par des arborescences différentes.
par exemple:
OBJET=D:\import\BALLON\&(lieu).&(raison),
OBJET=C:\toto\bateau\avions\&(lieu).&(raison),
OBJET=C:\source\&(lieu).&(raison),
etc...
Et là forcément il n'est plus question de faire une recherche cadrée sur une arborescence précise puisque celle-ci est susceptible de prendre des formes multiples.
Merci d'avance pour votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 à 11:30
30 juil. 2019 à 11:30
Je vais clôturer ce dossier, car pour la partie expression, je pense reposer la problématique autrement dans un autre sujet (je vais essayer d'être un peu plus clair)
En tout cas MERCI beaucoup Barbabe, tu m'as vraiment dépanné ! :-)
En tout cas MERCI beaucoup Barbabe, tu m'as vraiment dépanné ! :-)