Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Intersection de deux fichiers
Auteur Message
Répondre en citant
Message Intersection de deux fichiers 
Bonjour à tous,

J'aimerai savoir comment faire pour pouvoir

un fichier a.csv formé de 3 colonnes avec séparateur ';'
un fichier b.csv formé de 2 colonnes avec séparateur ';'
Les deux fichiers ont la même première colonne.

L'objectif étant de créer un fichier c.csv identique au fichier a.csv ( 3 colonnes) mais avec les lignes qui ont la première colonne présente dans les deux fichiers a.csv et b.csv

Illustration des fichiers:

Fic a.csv
======
Col1;Col2;Col3
1;a;b
2;c;d
3;e;f
4;a;i

Fic b.csv
======
Col1;Col2
1;z
2;t
5;i

En sortie : Fic c.csv
============
Col1;Col2;Col3
1;a;b
2;c;d

Pourriez-vous m'aider à écrire ceci en batch svp ?

Merci d'avance



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Intersection de deux fichiers 
Salut,
un smiley s'est inséré dans le code, Pensez à [CODE]




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Intersection de deux fichiers 
Vraiment pas clair ton exemple Shocked

Citation:
L'objectif étant de créer un fichier c.csv identique au fichier a.csv ( 3 colonnes) mais avec les lignes qui ont la première colonne présente dans les deux fichiers a.csv et b.csv

En sortie : Fic c.csv
============
Col1;Col2;Col3
1;a;b
2;c;d


a et c sont dans le premier fichier mais pas dans le 2éme pourquoi donc l'as-tu en sortie ?

Essayons d'être clair !!!

Merci

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Intersection de deux fichiers 
Bonjour,

Merci pour avoir pris le temps de me répondre.

En fait, c'est le contenu de la première colonne qui m'importe. Si le contenu de la première colonne est présent dans les 2 fichiers, je récupère la ligne entière

Donc comme la colonne 1 du fichier a contient les valeurs 1,2,3 et 4 et seules les valeurs 1 et 2 sont présents dans le fichier b.csv.
Donc mon fichier c.csv se crée à partir du fichier a.csv avec les lignes ayant dans la première colonne 1 et 2.

J'espère avoir été claire. et j'attends impatiemment une réponse sur ce sujet qui me prend du temps

Merci beaucoup



Répondre en citant
Message Intersection de deux fichiers 
Voici une solution (si j'ai compris ton problème Wink )

Code:
::SachaDee 2015

@echo off&cls
(for /f "tokens=1* delims=;" %%a in (a.csv) do (
 for /f "delims=;" %%c in (b.csv) do if %%a==%%c echo %%a;%%b
)
)>sortie.csv


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Intersection de deux fichiers 
On s'approche :-)

Je suis en effet partie sur les boucles imbriquées mais n'ayant pas réussis, j'ai laissé tombé.
Sinon, d'où vient le %%b dans le code que vous m'avez transmis : 'echo %%a; %%b

Et le @echo off&cls il sert à quoi?

J'ai testé votre commande mais le résultat est incorrect. (ci-après quelques lignes en sortie.csv)
Code:
D:\Efront\Script>if CP_PREV_C000137_42005 == CP_PREV_C000138_42005 echo CP_PREV_C000137_42005;1;01/02/2015;1;SPECIFIC;IJIND_42005_201502_001;Q01;; 

D:\Efront\Script>(for /F "delims=;" %c in (D:\Efront\Extractions\ExtractEfront\DATA_PREV_20150210_ELIGIBLES.csv) do if CP_PREV_C000138_42005 == %c echo CP_PREV_C000138_42005;1;01/02/2015;1;SPECIFIC;IJCOLL_42005_201502_001;Q01;;  )
D:\Efront\Script>if CP_PREV_C000138_42005 == CODE echo CP_PREV_C000138_42005;1;01/02/2015;1;SPECIFIC;IJCOLL_42005_201502_001;Q01;; 
D:\Efront\Script>if CP_PREV_C000138_42005 == CP_PREV_C000137_42005 echo CP_PREV_C000138_42005;1;01/02/2015;1;SPECIFIC;IJCOLL_42005_201502_001;Q01;; 
D:\Efront\Script>if CP_PREV_C000138_42005 == CP_PREV_C000138_42005 echo CP_PREV_C000138_42005;1;01/02/2015;1;SPECIFIC;IJCOLL_42005_201502_001;Q01;; 
CP_PREV_C000138_42005;1;01/02/2015;1;SPECIFIC;IJCOLL_42005_201502_001;Q01;;


Sinon, j'ai pu trouver finalement une façon de faire ( pas très optimale mais répond au besoin)
Code:
FOR  /F "tokens=1 delims=;" %%F IN (a.csv) DO (type b.csv |find /I "%%F" ) >>fictemp.csv
FOR  /F "tokens=1 delims=;" %%F IN (fictemp.csv) DO (type a.csv|find /I "%%F" ) >>c.csv


Et j'obtiens mon objectif.

Merci pour votre aide
Et peut-être à une prochaine



Message Intersection de deux fichiers 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch