Exploitation de colonnes

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 - 3 févr. 2020 à 14:39
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 4 févr. 2020 à 11:25
Bonjour,
je possède actuellement un fichier texte (plutôt simple) composé de 2 colonnes et dont les champs sont séparés par un espace:
ab SOURCE
pa DISTANT
id TOTO
rep C:\repertoire\envoi\fichier_test
mg test
val proto
tn MONEY


Mon but c'est d'exploiter les informations du fichier pour aboutir sur un autre fichier qui afficherait la ligne suivante:
SC=SOURCE,ETR=DISTANT,ENVLP=TOTO,DOS=C:\repertoire\envoi\fichier_test,SMG=test,NOTION=proto,NAMEF=MONEY

Les informations de la 1ère colonne sont donc transformées de cette façon:
ab ==> SC
pa ==> ETR
id ==> ENVLP
rep ==> DOS
mg ==> SMG
val ==> NOTION
tn ==> NAMEF

La 2nde colonne ne change pas, mais la correspondance doit être respectée. Exemple pour la 1ère ligne:
ab SOURCE doit donc donner SC=SOURCE,
etc...


N'étant pas expert en batch, je ne sais pas comment traiter cette problématique...
Est-ce que vous auriez des idées ?
Merci d'avance :-)
Ka-El

2 réponses

Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
Modifié le 3 févr. 2020 à 15:59
Avec mes connaissances assez vagues, j'arrive à obtenir un résultat sous forme de colonne:
@echo off
setlocal enableextensions enabledelayedexpansion

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

if "%%~A"=="ab" (echo SC=%%~B,)
if "%%~A"=="pa" (echo ETR=%%~B,)
if "%%~A"=="id" (echo ENVLP=%%~B,)
if "%%~A"=="rep" (echo DOS=%%~B,)
if "%%~A"=="mg" (echo SMG=%%~B,)
if "%%~A"=="val" (echo NOTION=%%~B,)
if "%%~A"=="tn" (echo NAMEF=%%~B,)

) >>%resultat%


Mais je ne vois pas comment formater les données sur une ligne, de façon à obtenir ce résultat ?:
SC=SOURCE,ETR=DISTANT,ENVLP=TOTO,DOS=C:\repertoire\envoi\fichier_test,SMG=test,NOTION=proto,NAMEF=MONEY
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
4 févr. 2020 à 00:01
Salut,

Tu y es presque, voilà la modif :

@echo off
setlocal enableextensions enabledelayedexpansion

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

if "%%~A"=="ab" (set ligne=!ligne!SC^=%%~B,)
if "%%~A"=="pa" (set ligne=!ligne!ETR^=%%~B,)
if "%%~A"=="id" (set ligne=!ligne!ENVLP^=%%~B,)
if "%%~A"=="rep" (set ligne=!ligne!DOS^=%%~B,)
if "%%~A"=="mg" (set ligne=!ligne!SMG^=%%~B,)
if "%%~A"=="val" (set ligne=!ligne!NOTION^=%%~B,)
if "%%~A"=="tn" (set ligne=!ligne!NAMEF^=%%~B,)

)

echo !ligne! >result.txt

pause
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
4 févr. 2020 à 11:25
Salut Barnabe,
je savais que je pouvais compter sur toi ! :-)

Ta solution fonctionne nickel.
Encore merci pour ton aide
0