+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    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

  2. #2
    Nouveau Membre du Club
    Profil pro
    Technicien Help Desk
    Inscrit en
    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

    Par défaut

    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.

  3. #3
    Invité de passage
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •