IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

comparer deux fichiers resultat dans un 3eme


Sujet :

VBScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 42
    Points
    42
    Par défaut comparer deux fichiers resultat dans un 3eme
    Bonjour

    je cherche une aide pour résoudre un problème

    j'ai un fichier " base.txt " ce fichier me serre de base de recherche il comprend

    toto module A
    titi module B
    tutu module A

    et un second fichier " resultat.txt " ce fichier est le résultat d'un ping il peux comprendre

    toto
    tutu
    titi


    je cherche a faire un script qui compare le fichier base.txt avec et le fichier resultat.txt
    et si je trouve une concordance j'inscrit dans un fichier la ligne du fichier base.txt

    Ex : il y a la ligne toto dans le fichier resultat.txt ainsi que dans base.txt j'inscrit dans un 3 fichier la ligne qui comprend toto ( toto module A )

    Merci pour votre aide

    Cdt

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Lecture d'un fichier ligne par ligne et comparaison de chaque ligne avec le second fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
     
    Dim fso, Fich1, Fich2, Fich3, R1, R2
     
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set fich1 = fso.OpenTextFile("Base.txt", ForReading, False) 
    Set fich2 = fso.OpenTextFile("Résultat.txt", ForReading, False )
    Set fich3 = fso.OpenTextFile("Compared.txt", ForWriting, True )
     
    Do While Not Fich2.AtEndOfStream
     
        Do While Not Fich1.AtEndOfStream
           R1 = Fich1.ReadLine
           If InStr(1, R1, R2, vbTextCompare) > 0 Then
              Fich3.WriteLine R1
           End If
        Loop
        R2 = Fich2.ReadLine
    Loop 
    Fich1.Close
    Fich2.Close
    Fich3.Close
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Voici une meilleure méthode que celle proposée avant(qui donne parfois des bizarreries) : Lecture de chaque fichier dans un tableau puis comparaison de leurs éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
     
    Dim fso, Fich1, Fich2, Fich3, tb1, tb2, I, J
     
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set fich1 = fso.OpenTextFile("Base.txt", ForReading, False) 
    Set fich2 = fso.OpenTextFile("Résultat.txt", ForReading, False )
    Set fich3 = fso.OpenTextFile("Compared.txt", ForWriting, True )
    tb1 = SPlit(Fich1.ReadAll, vbCrLf)
    tb2 = Split(Fich2.ReadAll, vbCrLf)
    Fich1.Close
    Fich2.Close
    For I = 0 To Ubound(Tb1)
        For J = 0 To UBound(tb2)
           If Left(Lcase(tb1(I)), Len(tb2(J))) = Lcase(tb2(J))  Then Fich3.WriteLine tb1(I)
        Next
    Next
    Fich3.Close
    Le fichier Base.txt contenant :
    toto module A
    Tito Module X
    titi module B
    Toti Module C
    tutu module A
    Le fichier Résultat.txt étant le même que l'original
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 42
    Points
    42
    Par défaut
    Bonjour

    cela me sort un résultat étrange

    Mon fichier base.txt comporte ( fichier servant de base de comparaison ) :
    toto-c001 >> TABLE A
    toto-c002 >> TABLE A
    toto-c003 >> TABLE A
    toto-c004 >> TABLE A
    toto-c005 >> TABLE A

    Mon fichier resultat.txt comporte ( fichier résultant d'un ping de X machines) :
    toto-c001

    Après l'exécution du traitement cela me donne ( identique au fichier base.txt )
    toto-C001 >> TABLE A
    toto-C001 >> TABLE A
    toto-c002 >> TABLE A
    toto-c003 >> TABLE A
    toto-c004 >> TABLE A
    toto-c005 >> TABLE A

    *** Moi ce que j'attend c'est plutôt un fichier contenant :

    toto-c001 >> TABLE A


    merci pour votre aide

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    J'ai fait le test le fichier 'Compared.txt' contient bien

    toto-c001 >> TABLE A

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 42
    Points
    42
    Par défaut
    Oui effectivement mais moi ce qui m'interesse ce n'est pas d'avoir la totalité du fichier base.txt

    c'est d'avoir seulement la ou les lignes qu'il trouve dans le fichier resultat.txt

    si le fichier resultat.txt comporte :
    toto-c001

    je souhaite avoir un fichier en sortie
    toto-C001 >> TABLE A

    OU

    si le fichier resultat.txt comporte :
    toto-c001
    toto-c250


    je souhaite avoir un fichier en sortie
    toto-C001 >> TABLE A
    toto-c250 >> TABLE X


    Merci pour votre aide

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Dans ton avant dernier message tu dit
    *** Moi ce que j'attend c'est plutôt un fichier contenant :
    toto-c001 >> TABLE A
    J'ai testé et le comportement est celui que tu attend.

    J'ai fait le test le fichier 'Compared.txt' contient bien
    toto-c001 >> TABLE A

    Par rapport à ton dernier message, le script proposé par l_autodidacte fait exactement ce que tu recherche.

    je ne comprend donc pas tes questions et je laisserai répondre l'auteur du script.

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Es-tu sûr d'avoir utilisé le code modifié ?

    J'ai déjà dit que le premier code sortait parfois des bizarreries alors le second fonctionne correctement.
    Merci à ericlm128 pour le test(qui est déjà positif).

    D'autre part, si le fichier Résultat.txt contient une ou des lignes n'ayant pas de correspondance dans le fichier Base.txt, le code ne retournera rien pour de telle(s) ligne(s).
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Comparer deux fichiers dans leur intégralités
    Par jejeapollo dans le forum VBScript
    Réponses: 2
    Dernier message: 25/06/2013, 14h11
  2. Réponses: 1
    Dernier message: 28/09/2011, 11h18
  3. comparer deux fichiers avec une api windows
    Par sweetdreamer dans le forum Windows
    Réponses: 4
    Dernier message: 25/05/2006, 22h10
  4. Lier deux fichiers HF dans une table
    Par SNITON dans le forum WinDev
    Réponses: 1
    Dernier message: 03/01/2006, 22h32
  5. Fonction c qui compare deux fichiers ???
    Par babyface dans le forum C
    Réponses: 4
    Dernier message: 19/11/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo