Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 11h32   #1
marcuselli
Invité de passage
 
Homme
Administrateur systèmes et réseaux
Inscription : décembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : décembre 2012
Messages : 4
Points : 1
Points : 1
Par défaut Comparaison fichiers TXT en vbscript

Bonjour

J'ai un petit soucis en VBS
Je vous explique mon objectif :
Je dispose de deux fichiers dans lesquels sont listés des chiffres : ex
Fichier1 Fichier 2
12 55
15 66
656 954
45 21
546 655
22 45
.... .....

En fait je voudrai vérifier si les chiffres présents dans le fichier 1 existent dans le fichier 2 !
Ça parait tout bête mais je tourne en rond.
Je précise que tous les chiffres présent dans un fichier sont Unique.

J'ai la trame de ce qu'il faut faire dans ma tête mais je n'arrive pas à la coder :
- ouvrir les deux fichiers en lecture
- récupérer les lignes une par une dans chacun des deux fichiers
- comparer les lignes

si quelqu'un a une idée, elle est la bienvenue !

Merci d'avance.

cordialement
marcuselli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 17h07   #2
Daynvheur
Nouveau Membre du Club
 
Technicien Help Desk
Inscription : décembre 2012
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Technicien Help Desk

Informations forums :
Inscription : décembre 2012
Messages : 23
Points : 29
Points : 29
La version la plus basique possible serait certainement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Option Explicit
Const ForWriting = 2, ForReading = 1, ForAppending = 8
 
Dim objFSO, fic1, fic2, fic1_op, fic2_op, fic1_rl, fic2_rl, SortieSansErreur
fic1 = "FICHIER1.TXT"
fic2 = "FICHIER2.TXT"
SortieSansErreur = True
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Set fic1_op = objFSO.OpenTextFile(fic1,ForReading)
Do
	fic1_rl = fic1_op.ReadLine
	Set fic2_op = objFSO.OpenTextFile(fic2,ForReading)
	Do
		fic2_rl = fic2_op.ReadLine
	Loop Until fic2_op.AtEndOfStream = True Or fic2_rl = fic1_rl
	Set fic2_op = Nothing
	If Not fic2_rl = fic1_rl Then
		WScript.echo "Le nombre " & fic1_rl & " de " & fic1 & " n'a pas été trouvé dans " & fic2
		SortieSansErreur = False
	End If
Loop Until fic1_op.AtEndOfStream = True 'Or Not fic1_rl = fic2_rl 'Pour sortir de la boucle directement en cas de nombre présent dans fic1 inexistant dans fic2
Set fic1_op = Nothing
 
'Attention, il n'y a pas de vérification que tous les nombres présents dans fic2 soient effectivement présents dans fic1,
'la comparaison se limite à vérifier que tous les nombres dans fic1 sont bien présents dans fic2 !
If SortieSansErreur Then
	WScript.echo "Toutes les lignes de " & fic1 & " sont bien présentes dans " & fic2
Else
	WScript.echo "Il y a au-moins une ligne de " & fic1 & " qui n'est pas présente dans " & fic2
End If
 
Set objFSO = Nothing
WScript.quit
Comme indiqué en commentaire, il n'y a pas de vérification sur le contenu de fic2, donc (si fic2 contient plus de lignes) certaines lignes de fic2 peuvent ne pas être présentes dans fic1.

- Ouvrir un fichier en lecture : Set fic1_op = objFSO.OpenTextFile(fic1,ForReading)
Ne pas oublier de relâcher l'objet par Set fic1_op = Nothing
- Récupérer les lignes une par une dans chacun des deux fichiers : une double boucle qui parcoure chaque ligne de fic1 pour la comparer avec les lignes de fic2
- Comparer les lignes : lire la ligne dans une variable texte (fic1_rl = fic1_op.ReadLine), puis comparer à toutes les autres lignes de fic2 par un fic2_rl(variable)=fic1_rl.
Daynvheur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 08h30   #3
marcuselli
Invité de passage
 
Homme
Administrateur systèmes et réseaux
Inscription : décembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : décembre 2012
Messages : 4
Points : 1
Points : 1
Par défaut excellent !

C'est exactement ce que je voulais !

Merci beaucoup pour ton aide.
marcuselli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h58.


 
 
 
 
Partenaires

Hébergement Web