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 :

Contrôle de l'intégrité d'un fichier balisé


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Par défaut Contrôle de l'intégrité d'un fichier balisé
    Bonjour,

    j'ai besoin de créer un script en VBS permettant de vérifier l'intégrité d'un fichier balisé de plusieurs centaines / milliers de lignes et je ne sais pas trop comment m'y prendre...

    A l'exécution de ce script, celui-ci doit ouvrir un fichier TXT ou XML et en lire chaque ligne :

    - Identifier une balise d'ouverture (par ex. : <Mon_exemple>)
    - Mettre en mémoire le nom de cette balise ainsi que la ligne ou elle se trouve
    - Continuer à lire le fichier et identifier une balise de fermeture (par ex. : </Mon_exemple>)
    - Si le nom des balises d'ouverture et de fermeture est identique, supprimer le nom de la balise (Mon_exemple) en mémoire ainsi que la ligne ou elle se trouve

    En fin de lecture du fichier, afficher le nom des balises "orphelines" (qu'elles soient d'ouverture ou de fermeture) ainsi que les lignes ou elle se trouvent.

    Dans cet exemple, les balises "Info_2" - ligne 3 et "Info_4" - ligne 5 sont orphelines :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <Balise_1>
    <Info_1>Mon info 1</Info_1>
    <Info_2>Mon info 2
    <Info_3>Mon info 3</Info_3>
    Mon info 4</Info_4>
    <Info_5>Mon info 5</Info_5>
    </Balise_1>
    <Balise_1>Mon info 6</Balise_1>


    Note : Une balise du même nom peut être déclarée plusieurs fois dans le fichier à condition qu'elle soit refermée avant qu'elle soit ouverte de nouveau (lignes 1, 7 et 8)

    SVP, avez-vous des pistes / idées à me proposer ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Par défaut
    Personne que cela inspire ? Ma demande n'est pas assez claire ?

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    Ma demande n'est pas assez claire ?
    très claire au contraire mais j'ai besoin encore d'un peu de temps
    pour te proposer quelque chose car je suis assez occupé
    et la gestion des lignes complique pas mal l'algo
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Membre expérimenté
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Par défaut
    Super, merci...

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Moi j'en suis là, mais je pense que algorithme n'est pas très solide, il faudrait plus de ligne pour améliorer et peut être passer par un RegExp avec Pattern = "(<[A-Za-z0-9_]*>)" 'pour trouver toutes les balises d'ouverture et Pattern = "(</[A-Za-z0-9_]*>)" 'pour trouver toutes les balises de fermeture.
    En attendant ...
    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
    40
    41
    42
    43
    44
    45
    Dim LeFichier 'pour simuler le contenu du fichier
    LeFichier = "<Balise_1>" & vbnewline _
    & "<Info_1>Mon info 1</Info_1>" & vbnewline _
    & "<Info_2>Mon info 2" & vbnewline _
    & "<Info_3>Mon info 3</Info_3>" & vbnewline _
    & "Mon info 4</Info_4>" & vbnewline _
    & "<Info_5>Mon info 5</Info_5>" & vbnewline _
    & "</Balise_1>" & vbnewline _
    & "<Balise_1>Mon info 6</Balise_1>"
     
    Dim Memo
    Call(Trier)
    MsgBox "Balise(s) orpheline(s) " & vbnewline & vbnewline & Memo
     
    '*******************************************************************************
    Sub Trier()
    Dim Cpt, PosDeb, PosFin, PoS
    Dim TblLg, TblCol, BaliseDeb, BaliseFin
     
    TblLg = split(LeFichier,vbnewline)
    For Cpt = 0 to Ubound(TblLg)
            PosDeb = Instr(1,TblLg(Cpt),"<",0)+ 1
            PosFin = Instr(PosDeb,TblLg(Cpt),">",0)
            BaliseDeb = Mid(TblLg(Cpt),PosDeb,PosFin-PosDeb)
            'MsgBox "BaliseDeb = " & BaliseDeb,,"première recherche"
            If Left(BaliseDeb,1) ="/" Then
                    'MsgBox "balise fermente: " & BaliseDeb
                    BaliseFin = "<" & BaliseDeb & ">"
                    BaliseDeb = "<" & replace(BaliseDeb,"/","") & ">"
                    Pos = InStrRev(LeFichier,BaliseDeb,PosFin,0)
                    If Pos=0 Then
                            Memo = Memo & "ligne " & Cpt+1 & ": " & BaliseFin & vbnewline
                    End If
                    Else
                    'MsgBox "balise ouvrente: " & BaliseDeb
                    BaliseFin = "</" & BaliseDeb & ">"
                    BaliseDeb = "<" & BaliseDeb & ">"
                    Pos = Instr(PosFin,LeFichier,BaliseFin,0)
                    If Pos=0 Then
                            Memo = Memo & "ligne " & Cpt+1 & ": " & BaliseDeb & vbnewline
                    End If
            End If
    Next
    End Sub
    '*******************************************************************************
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre expérimenté
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Par défaut
    @ProgElecT, pour un premier jet, c'est déjà super...

    ça correspond tout à fait à mon besoin :-) :-)

Discussions similaires

  1. Réponses: 40
    Dernier message: 15/12/2013, 20h05
  2. Réponses: 3
    Dernier message: 18/07/2012, 15h20
  3. Contrôle d'en tête d'un fichier
    Par swibina dans le forum DataStage
    Réponses: 0
    Dernier message: 26/04/2012, 14h12
  4. Réponses: 2
    Dernier message: 30/07/2009, 11h05
  5. Md5/Sha1 : Vérification de l'intégrité d'un fichier
    Par ShinMei dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 26/05/2005, 10h43

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