Exploitation de colonnes [Résolu]

Signaler
Messages postés
258
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
3 juillet 2020
-
Messages postés
258
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
3 juillet 2020
-
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

Messages postés
258
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
3 juillet 2020

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
Messages postés
12638
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
7 juillet 2020
3 340
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
Messages postés
258
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
3 juillet 2020

Salut Barnabe,
je savais que je pouvais compter sur toi ! :-)

Ta solution fonctionne nickel.
Encore merci pour ton aide