Bonsoir, Je reviens vers vous car j'ai un problème pour comparer deux fichiers ligne par ligne et récupérer le résultat dans deux fichiers de sortie différents en fonction de si la ligne du fichier1 testée existe dans le fichier2 ou non.
La ligne de fichier1.txt existe dans fichier2.txt --> je recopie la ligne dans sortie1.txt
La ligne de fichier1.txt n'existe pas dans fichier2.txt --> je recopie la ligne dans sortie2.txt
Pour faire ça j'imbrique deux boucles for et je test avec un if LigneFichier1==LigneFichier2.
Jusque la pas de soucis, le problème c'est que je me retrouve avec dans les fichiers de sortie X fois la même ligne, ou X représente le nombre de lignes total de fichier2.txt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for /f "delims=" %%d in ('type !fichier1!') do for /f "delims=" %%e in ('type !fichier2!') do if "%%d" EQU "%%e" ( echo [la ligne %%d existe]>>sortie1.txt ) else ( echo [la ligne %%d n'existe pas]>>sortie2.txt )
Je me retrouve donc dans sortie2.txt (par exemple) ce genre de ligne répétées autant de fois que le nombre de ligne total dans fichier2.txt :
[la ligne Ma.ligne.en.question n'existe pas]
[la ligne Ma.ligne.en.question n'existe pas]
[la ligne Ma.ligne.en.question n'existe pas]
[la ligne Ma.ligne.en.question n'existe pas]
[la ligne Ma.ligne.en.question n'existe pas]
[la ligne Ma.ligne.en.question n'existe pas]
et dans sortie1.txt :
[la ligne ma.première.ligne existe]
[la ligne ma.deuxième.ligne existe]
[la ligne ma.troisième.ligne existe]
[la ligne ma.première.ligne existe]
[la ligne ma.deuxième.ligne existe]
[la ligne ma.troisième.ligne existe]
[la ligne ma.première.ligne existe]
[la ligne ma.deuxième.ligne existe]
[la ligne ma.troisième.ligne existe]
[la ligne ma.première.ligne existe]
[la ligne ma.deuxième.ligne existe]
[la ligne ma.troisième.ligne existe]
Etc...
Alors que je souhaite obtenir dans sortie2.txt:
[la ligne Ma.ligne.en.question n'existe pas]
[la ligne une.autre.ligne.encore n'existe pas]
Etc...
et dans sortie1.txt:
[la ligne ma.première.ligne existe]
[la ligne ma.deuxième.ligne existe]
[la ligne ma.troisième.ligne existe]
Donc la question, est il possible de faire deux commande type sur deux fichiers différents depuis une même boucle FOR. Mais je me doute bien que non, mais sait-on jamais...
Ou bien lorsque une ligne est trouvé dans les deux fichiers, terminer (ou sortir de) la boucle du deuxième FOR tout en continuant la boucle du premier FOR.
Je ne sais pas si je suis clair la ou tout autre astuces palliative me conviendra du moment que j'obtient le résultat escompté.
Merci par avance de votre aide.
Partager