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 :

Comparaison entre 2 fichiers textes


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut Comparaison entre 2 fichiers textes
    Bonjour,

    Je voudrais faire une comparaison entre 2 fichiers textes. J'ai trouvé un script qui effectue très bien cette action. Cependant, la sortie se fait en message box pour chaque différence trouvée.
    Je voudrais que l'ensemble du résultat s'écrive dans un nouveau fichier texte.
    Pour progresser en script je souhaiterai avoir des indications sur ce qu'il y a à faire mais essayer de trouver la solution par moi-même.

    Voici le code de départ :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    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
    Merci pour votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    J'ai commencé à avancer sur la modification du script :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Option Explicit
    Const ForWriting = 2, ForReading = 1, ForAppending = 8
     
    Dim VerifLigne
     
    Dim objFSO, fic, 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
     
    		VerifLigne = fic1_rl & vbCrLf
     
    	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
     
    Set fic = WScript.CreateObject("WScript.Shell") 
                 Dim fso, f 
                 Set fso = CreateObject("Scripting.FileSystemObject") 
                 Set f = fso.OpenTextFile("Fichier3.txt", ForWriting, true) 
                 f.writeline(VerifLigne)
     
    Set objFSO = Nothing
    WScript.quit
    Par contre je n'ai que la dernière ligne de différence qui s'affiche. Les autres doivent être écrasées au fur et à mesure de la boucle.
    Il me faudrait l'ensemble des différences dans le nouveau fichier texte. Je ne sais pas où et comment gérer cette sortie de boucle.

  3. #3
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut


    J'ai déjà regardé ces scripts mais ce n'est pas de la comparaison ligne par ligne que je veux faire.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Normalement j'ai trouvé la solution. Je fais quelques tests pour confirmer que tout fonctionne et je poste le script en entier.


  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Voici le script final :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Option Explicit
    Const ForWriting = 2, ForReading = 1, ForAppending = 8
     
    Dim objFSO, fic1, fic2, fic1_op, fic2_op, fic1_rl, fic2_rl, SortieSansErreur, FichierTXT
    fic1 = "C:\Test1.txt"
    fic2 = "C:\Test2.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
     
                Set FichierTXT = WScript.CreateObject("WScript.Shell") 
                 Dim fso, f 
                 Set fso = CreateObject("Scripting.FileSystemObject") 
                 Set f = fso.OpenTextFile("C:\Test3.txt", ForAppending,true) 
                 f.writeline(fic1_rl) 
              f.close
     
    		SortieSansErreur = False
    	End If
    Loop Until fic1_op.AtEndOfStream = True 
    Set fic1_op = Nothing
     
     
     
    Set objFSO = Nothing
    WScript.quit

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

Discussions similaires

  1. comparaison valeurs entre deux fichiers texte
    Par seb-65 dans le forum Langage
    Réponses: 8
    Dernier message: 18/12/2013, 13h46
  2. [Débutant] Comparaisons entre deux fichiers textes
    Par shootgirl dans le forum MATLAB
    Réponses: 9
    Dernier message: 27/09/2011, 14h50
  3. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  4. [2003] comparaison dans un fichier texte
    Par souaddemaroc dans le forum VB.NET
    Réponses: 14
    Dernier message: 09/02/2007, 09h28
  5. comparaison de deux fichiers textes
    Par chmaichel dans le forum Delphi
    Réponses: 1
    Dernier message: 28/07/2006, 11h35

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