1. #1
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut Extraction chaine de caractère entre deux balises.

    Bonjour,

    J’ai une tache planifiée qui lance une requête de 10 pings sur une adresse IP toutes les minutes et qui génère un fichier log.
    J’aimerais récupérer la date et l’heure des requêtes qui ont un maximum de 100 MS.

    Voici à quoi ressemble le fichier de log :

    =============START===============
    09/10/2017 12:10:00,96

    Envoi d'une requˆte 'Ping' 192.168.141.10 avec 32 octets de donn‚esÿ:
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128

    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :
    Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
    ==============END==============
    =============START===============
    09/10/2017 12:11:59,01

    Envoi d'une requˆte 'Ping' 192.168.141.10 avec 32 octets de donn‚esÿ:
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128

    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :
    Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
    ==============END==============
    Voici ce que j’ai tenté :

    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
    OPTION Explicit
     
    Dim fichier_lecture_1, fichier_lecture_2
    Dim BaliseDebut, BaliseFin
    Dim DebutOu, FinOu
    Dim chaine
    Dim fso
     
    fichier_lecture_1 = "latence.log"
     
    BaliseDebut = "Maximum = "
    BaliseFin = ", Moyenne"
     
    DebutOu = 1
     
    Set fso = CreateObject("Scripting.FileSystemObject") 
    set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true)
     
    do until fichier_lecture_2.atendofstream 
    	chaine = fichier_lecture_2.readline()
    	if InStr(DebutOu, chaine, BaliseDebut) > 0 Then
    		DebutOu = DebutOu + Len(BaliseDebut)
    		FinOu = DebutOu
    		FinOu = InStr(FinOu, chaine, BaliseFin)
    	end if
    Loop
     
    fichier_lecture_2.close 
    set fichier_lecture_2 = nothing
    set fso = nothing 
     
    MsgBox Mid(chaine, DebutOu, FinOu - DebutOu)
    Pour le moment j’ai un message box vide !

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    Salut
    Une façon de procéder
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Dim fichier_lecture_1, fichier_lecture_2
    Dim BaliseDebut, BaliseFin
    Dim DebutOu, FinOu
    Dim chaine
    Dim fso
    fichier_lecture_1 = "latence.log"
     
    BaliseDebut = "Maximum = "
    BaliseFin = ", Moyenne"
     
    DebutOu = 1
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1)
     
    Dim CtnFichier, TblChapitre, TblLgn, Recup, T
    CtnFichier = fichier_lecture_2.ReadAll
    fichier_lecture_2.Close
    Set fichier_lecture_2 = Nothing
    Set fso = Nothing
    TblChapitre = Split(CtnFichier, "==============END==============", -1, vbTextCompare) ' découpe en un tableau de chaque Ping
    'MsgBox TblChapitre(0) 'partie d'1 Ping
    For T = 0 To UBound(TblChapitre) - 1
        DebutOu = InStr(1, TblChapitre(T), BaliseDebut)
        If DebutOu > 0 Then ' DebutOu a été trouvé
            DebutOu = DebutOu + Len(BaliseDebut)
            FinOu = DebutOu
            FinOu = InStr(FinOu, TblChapitre(T), BaliseFin)
            Recup = Mid(TblChapitre(T), DebutOu, (FinOu-2) - DebutOu) 'récupération du chiffre (tempo Maximum) pour ce Ping
            If Recup >= 100 Then
                TblLgn = Split(TblChapitre(T), vbNewLine, -1, vbTextCompare) ' découpe en un tableau de chaque ligne du chapitre d'1 Ping
                If chaine <> "" Then chaine = chaine & "--------------------------------" & vbNewLine
                chaine = chaine & TblLgn(2) & vbNewLine & _
                                  TblLgn(16) & vbNewLine & _
                                  TblLgn(17) & vbNewLine & _
                                  TblLgn(19)
            End If
        End If
     
    Next
    'Do Until fichier_lecture_2.atendofstream
    '    chaine = fichier_lecture_2.readline()
    '    If InStr(DebutOu, chaine, BaliseDebut) > 0 Then
    '        DebutOu = DebutOu + Len(BaliseDebut)
    '        FinOu = DebutOu
    '        FinOu = InStr(FinOu, chaine, BaliseFin)
    '    End If
    'Loop
     
    'fichier_lecture_2.Close
    'Set fichier_lecture_2 = Nothing
    'Set fso = Nothing
    'MsgBox Mid(chaine, DebutOu, FinOu - DebutOu)
    MsgBox chaine
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  3. #3
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    Merci ProgElecT
    Dans l’état actuel le code me retourne un MsgBox Vide.

    En activant le MsgBox TblChapitre(0) ligne 22 j’ai bien le tableau d’un sicle de ping.

    En Ajoutant un MsgBox Recup ligne 38 j’obtiens bien la durée Maximum des boucles en millisecondes.

    En passant une valeur Maximum a plus de 100MS dans le fichier de log, j’ai le message suivant :
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :

    Peut on essayer de reprendre l’heure et la date du tableau de ping concerné et la valeur ?

  4. #4
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    La seule modification ligne 32 du code pour améliorer le visu du MsgBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                If chaine <> "" Then chaine = chaine & vbNewLine & "--------------------------------" & vbNewLine
    Peut être le codage de ton fichier .log car les caractères accentués ne sont pas bien rendu, le mien a été enregistré en ANSI.
    Contenu du fichier:
    =============START===============
    09/10/2017 12:10:00,96

    Envoi d'une requˆte 'Ping' 192.168.141.10 avec 32 octets de donn‚esÿ:
    R‚ponse de 192.168.141.10ÿ: octets=3t2 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: ocets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128

    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :
    Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
    ==============END==============
    =============START===============
    09/10/2017 12:11:59,01

    Envoi d'une requˆte 'Ping' 192.168.141.10 avec 32 octets de donn‚esÿ:
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128

    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :
    Minimum = 0ms, Maximum = 100ms, Moyenne = 0ms
    ==============END==============
    =============START===============
    09/10/2017 12:11:59,01

    Envoi d'une requˆte 'Ping' 192.168.141.10 avec 32 octets de donn‚esÿ:
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128

    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :
    Minimum = 0ms, Maximum = 99ms, Moyenne = 0ms
    ==============END==============
    =============START===============
    09/10/2017 12:11:59,01

    Envoi d'une requˆte 'Ping' 192.168.141.10 avec 32 octets de donn‚esÿ:
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128

    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Dur‚e approximative des boucles en millisecondes :
    Minimum = 0ms, Maximum = 200ms, Moyenne = 0ms
    ==============END==============
    Le MsgBox
    Images attachées Images attachées  
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  5. #5
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    Bien vue pour l’encodage AINSI.
    Vu que ma tache planifiée va tourner toute une semaine, à raison d’un sicle de 10 pings par minute.
    J’ai modifié l’enregistrement du résultat vers un fichier « rapport.txt ».
    Ma modification fonctionne, mais est-elle bien gérée et propre (ouverture, fermeture, nettoyage etc..)

    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
    46
    47
    48
    49
    50
    51
    Option Explicit
     
    Dim fichier_lecture_1, fichier_lecture_2
    Dim BaliseDebut, BaliseFin
    Dim DebutOu, FinOu
    Dim chaine
    Dim fso
    Dim fichier_ecriture_1, fichier_ecriture_2
     
    fichier_lecture_1 = "latence.log"
    fichier_ecriture_1 = "rapport.txt"
     
     
    BaliseDebut = "Maximum = "
    BaliseFin = ", Moyenne"
     
    DebutOu = 1
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1)
    Set fichier_ecriture_2 = fso.CreateTextFile(fichier_ecriture_1,True)
     
    Dim CtnFichier, TblChapitre, TblLgn, Recup, T
     
    CtnFichier = fichier_lecture_2.ReadAll
    fichier_lecture_2.Close
    Set fichier_lecture_2 = Nothing
    Set fso = Nothing
    TblChapitre = Split(CtnFichier, "==============END==============", -1, vbTextCompare) ' découpe en un tableau de chaque Ping
    'MsgBox TblChapitre(0) 'partie d'1 Ping
    For T = 0 To UBound(TblChapitre) - 1
        DebutOu = InStr(1, TblChapitre(T), BaliseDebut)
        If DebutOu > 0 Then ' DebutOu a été trouvé
            DebutOu = DebutOu + Len(BaliseDebut)
            FinOu = DebutOu
            FinOu = InStr(FinOu, TblChapitre(T), BaliseFin)
            Recup = Mid(TblChapitre(T), DebutOu, (FinOu-2) - DebutOu) 'récupération du chiffre (tempo Maximum) pour ce Ping
            If Recup >= 100 Then
                TblLgn = Split(TblChapitre(T), vbNewLine, -1, vbTextCompare) ' découpe en un tableau de chaque ligne du chapitre d'1 Ping
    	    If chaine <> "" Then chaine = chaine & vbNewLine & "--------------------------------" & vbNewLine
                chaine = chaine & TblLgn(2) & vbNewLine & _
                                  TblLgn(16) & vbNewLine & _
                                  TblLgn(17) & vbNewLine & _
                                  TblLgn(19)
            End If
        End If
     
    Next
     
    fichier_ecriture_2.write chaine
    fichier_ecriture_2.close

  6. #6
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    La der de der
    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
    Option Explicit
     
    Dim fso, fichier
    Dim BaliseDebut, BaliseFin
    Dim DebutOu, FinOu
    Dim TblChapitre, TblLgn, Recup, T
    Dim chaine
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.opentextfile("latence.log", 1)
    TblChapitre = Split(fichier.ReadAll, "==============END==============", -1, vbTextCompare)
    fichier.Close
    Set fichier = Nothing
     
    BaliseDebut = "Maximum = "
    BaliseFin = ", Moyenne"
    For T = 0 To UBound(TblChapitre) - 1
        DebutOu = InStr(1, TblChapitre(T), BaliseDebut)
        If DebutOu <> 0 Then ' DebutOu a été trouvé
            DebutOu = DebutOu + Len(BaliseDebut)
            FinOu = DebutOu
            FinOu = InStr(FinOu, TblChapitre(T), BaliseFin)
            Recup = Mid(TblChapitre(T), DebutOu, (FinOu-2) - DebutOu) 'récupération du chiffre (tempo Maximum) pour ce Ping
            If Recup >= 100 Then
                TblLgn = Split(TblChapitre(T), vbNewLine, -1, vbTextCompare) ' découpe en un tableau de chaque ligne du chapitre d'1 Ping
    	    If chaine <> "" Then chaine = chaine & vbNewLine & "--------------------------------" & vbNewLine
                chaine = chaine & TblLgn(2) & vbNewLine & _
                                  TblLgn(16) & vbNewLine & _
                                  TblLgn(17) & vbNewLine & _
                                  TblLgn(19)
            End If
        End If
    Next
     
    If chaine = "" then chaine = "Aucun dépassement maxi de plus de 100ms"
    Set fichier = fso.CreateTextFile("rapport.txt",True)
    fichier.write chaine
    fichier.Close
    Set fichier = Nothing
    Set fso = Nothing
    MsgBox "Fait"
    A par la dernière ligne que tu pourras supprimer.
    Le code est minimaliste:
    • Inutile d'avoir des variables pour un contenu qui n'est utilisé qu'une seul fois, autant le mettre en dur directement dans le code.
    • Certaines variables peuvent être recyclées.
    • Le contenu de la variable est intéressant à être remplis près de l'endroit du code ou elle va être utilisée.
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  7. #7
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    J’ai un petit bug qui semble lié à la taille du fichier de log « 5.01 MO ».
    Sur un fichier de log de « 4,56 KO » je n’ai pas ce problème.
    Affichage au début du fichier rapport des 3 premier sauts de ping.


    06/10/2017 12:14:59,01
    R‚ponse de 192.168.141.10ÿ: octets=32 temps=1 ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    R‚ponse de 192.168.141.10ÿ: octets=32 temps<1ms TTL=128
    --------------------------------
    06/10/2017 12:33:59,02
    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Minimum = 0ms, Maximum = 133ms, Moyenne = 13ms
    --------------------------------
    06/10/2017 12:49:59,02
    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Minimum = 0ms, Maximum = 145ms, Moyenne = 14ms
    --------------------------------
    06/10/2017 13:00:59,02
    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Minimum = 0ms, Maximum = 106ms, Moyenne = 11ms
    --------------------------------
    06/10/2017 14:22:59,01
    Statistiques Ping pour 192.168.141.10:
    Paquetsÿ: envoy‚s = 10, re‡us = 10, perdus = 0 (perte 0%),
    Minimum = 625ms, Maximum = 696ms, Moyenne = 661ms
    --------------------------------

  8. #8
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    Oups, rien à voir avec la taille du fichier !
    Lors d’un test j’avais modifié le nombre de Ping demandé depuis le script de ma tâche planifié.

    @echo off
    echo =============START=============== >> c:\latence.log
    echo %date% %time% >> c:\latence.log
    ping -n 10 192.168.141.10 >> c:\latence.log
    echo ==============END============== >> c:\latence.log
    Tout est OK.
    Merci

  9. #9
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    J’aimerais récupérer le temps passer entre chaque latence supérieur a 100 ms, afin de savoir si elles sont aléatoires ou récurrentes
    L’idée une fonction date du genre :

    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
        Function InterLatence(Date1, Date2) 
            If (isDate(Date1) And IsDate(Date2)) = false Then 
                InterLatence = "00:00:00" 
                Exit Function 
            End If 
     
            seconds = Abs(DateDiff("S", Date1, Date2)) 
            minutes = seconds \ 60 
            hours = minutes \ 60 
            minutes = minutes mod 60 
            seconds = seconds mod 60 
     
            if len(hours) = 1 then hours = "0" & hours 
     
            InterLatence = hours & ":" & _ 
                RIGHT("00" & minutes, 2) & ":" & _ 
                RIGHT("00" & seconds, 2) 
        End Function 
     
        Date1 = "2017/10/12 9:20:25" 
        Date2 = "2017/10/12 10:13:45" 
     
        MsgBox InterLatence(Date1, Date2)
    Mon souci et que je dois récupérer ces dates mais je ne sais pas trop comment !
    Via un autre script qui analyserait le fichier rapport ou depuis le script initial, mais cela me semble beaucoup plus complexe.
    Je rencontre aussi des difficultés sur la manière d’adapter le format de la date du script ci-dessus qui est au format années/mois/jours et qui pour être compatible avec mon fichier rapport doit être sous la forme jours/mois/années.

  10. #10
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    Salut

    Je rencontre aussi des difficultés sur la manière d’adapter le format de la date du script ci-dessus qui est au format années/mois/jours et qui pour être compatible avec mon fichier rapport doit être sous la forme jours/mois/années.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    '-------------------------------------------
    Function jma(TheDate)
    Dim amj
    amj = Split(TheDate, "/", -1, vbTextCompare)
    jma = amj(2) & "/" & amj(1) & "/" & amj(0)
    End Function
    '-------------------------------------------
     
    Dim Date1
    Date1 = "2017/10/12 9:20:25"
    MsgBox jma(left(Date1,10)), vbInformation
    Demain je te donnerais un coup de main, si tu n'arrives pas à mettre la partie de ta fonction InterLatence (qui me semble à premier vue Ok) dans la partie analyse depuis le script initial.
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  11. #11
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    Comme promis.
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit
     
    '-------------------------------------------
    Function jma(TheDate)
    Dim amj
    amj = Split(TheDate, "/", -1, vbTextCompare)
    jma = amj(2) & "/" & amj(1) & "/" & amj(0)
    End Function
    '-------------------------------------------
    Function InterLatence(Date1, Date2)
    Dim seconds, minutes, hours
     
    If (isDate(Date1) And IsDate(Date2)) = false Then
        InterLatence = "00:00:00"
        Exit Function
    End If
     
    seconds = Abs(DateDiff("S", Date1, Date2))
    minutes = seconds \ 60
    hours = minutes \ 60
    minutes = minutes mod 60
    seconds = seconds mod 60
     
    if len(hours) = 1 then hours = "0" & hours
     
    InterLatence = hours & ":" & _
    Right("00" & minutes, 2) & ":" & _
    Right("00" & seconds, 2)
    End Function'-------------------------------------------
     
    Dim fso, fichier
    Dim BaliseDebut, BaliseFin
    Dim DebutOu, FinOu
    Dim TblChapitre, TblLgn, Recup, T
    Dim chaine
    Dim OldTemps, DerTemps, EcartTempo
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.opentextfile("C:\PersoFrancis\En VBScript et HTA\Extraction chaine de caractère entre deux balises\latence.log", 1)
    TblChapitre = Split(fichier.ReadAll, "==============END==============", -1, vbTextCompare)
    fichier.Close
    Set fichier = Nothing
     
    BaliseDebut = "Maximum = "
    BaliseFin = ", Moyenne"
    For T = 0 To UBound(TblChapitre) - 1
        DebutOu = InStr(1, TblChapitre(T), BaliseDebut)
        If DebutOu <> 0 Then ' DebutOu a été trouvé
            DebutOu = DebutOu + Len(BaliseDebut)
            FinOu = DebutOu
            FinOu = InStr(FinOu, TblChapitre(T), BaliseFin)
            Recup = Mid(TblChapitre(T), DebutOu, (FinOu - 2) - DebutOu) 'récupération du chiffre (tempo Maximum) pour ce Ping
            If Recup >= 100 Then
                TblLgn = Split(TblChapitre(T), vbNewLine, -1, vbTextCompare) ' découpe en un tableau de chaque ligne du chapitre d'1 Ping
                If chaine = "" Then OldTemps = TblLgn(2)
                DerTemps = TblLgn(2)
                If InStr(OldTemps, ",") Then OldTemps = Left(OldTemps, Len(OldTemps) - 3)
                If InStr(DerTemps, ",") Then DerTemps = Left(DerTemps, Len(DerTemps) - 3)
                EcartTempo = InterLatence(OldTemps, DerTemps)
                OldTemps = DerTemps
                If chaine <> "" Then chaine = chaine & vbNewLine & "----------- " & EcartTempo & " -----------" & vbNewLine
                chaine = chaine & TblLgn(2) & vbNewLine & _
                                  TblLgn(16) & vbNewLine & _
                                  TblLgn(17) & vbNewLine & _
                                  TblLgn(19)
            End If
        End If
    Next
     
    If chaine = "" then chaine = "Aucun dépassement maxi de plus de 100ms"
    Set fichier = fso.CreateTextFile("C:\PersoFrancis\En VBScript et HTA\Extraction chaine de caractère entre deux balises\rapport.txt",True)
    fichier.write chaine
    fichier.Close
    Set fichier = Nothing
    Set fso = Nothing
    MsgBox "Fait"
    ATTENTION, adapter le chemin en ligne 39 et 71.
    De plus la fonction jma(TheDate) dans un premier temps, n'est pas utilisée car je ne sais pas ou tu en as besoin, au niveau du fichier latence.log?
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  12. #12
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    Je ne suis pas sûr d’avoir bien compris ta question.
    Il me semble que la fonction "jma(TheDate)" doit s’appliquer sur la fonction "Function InterLatence(Date1, Date2)" pour rendre compatible le format de date de la ligne "TblLgn(2)" du fichier (latence.log) nom ?
    Voici un fichier de log :

    latence.zip

  13. #13
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut


    Citation Envoyé par NeriXs Voir le message
    Ce fichier .log n'a pas de date année/mois/jour mais bien jour/mois/année
    Par contre l'horaire peut être heure sur un seul chiffre (0 à 9 heures) d’où cette substitution (53 à 56 du précédant code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            If Recup >= 100 Then
                TblLgn = Split(TblChapitre(T), vbNewLine, -1, vbTextCompare) ' découpe en un tableau de chaque ligne du chapitre d'1 Ping
                If chaine = "" Then OldTemps = TblLgn(2)
                DerTemps = TblLgn(2)
                If InStr(OldTemps, ",") Then OldTemps = Left(OldTemps, (InStr(OldTemps, ",") - 1))
                If InStr(DerTemps, ",") Then DerTemps = Left(DerTemps, (InStr(DerTemps, ",") - 1))
                EcartTempo = InterLatence(OldTemps, DerTemps)
                OldTemps = DerTemps
                If chaine <> "" Then chaine = chaine & vbNewLine & "----------- " & EcartTempo & " -----------" & vbNewLine
                chaine = chaine & TblLgn(2) & vbNewLine & _
                                  TblLgn(16) & vbNewLine & _
                                  TblLgn(17) & vbNewLine & _
                                  TblLgn(19)
            End If
    Toujours pas d'utilisation de la fonctionv jma(TheDate)
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  14. #14
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    Ce que je ne savais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        'année/mois/jour
        Date1 = "2017/10/25 9:20:25,09"
        Date2 = "2017/10/25 10:13:45,14"
    If InStr(Date1, ",") Then Date1 = Left(Date1, (InStr(Date1, ",") - 1))
    If InStr(Date2, ",") Then Date2 = Left(Date2, (InStr(Date2, ",") - 1))
    MsgBox InterLatence(Date1, Date2), vbInformation, "depuis date = année/mois/jour" '00:53:20 résultat exacte
     
        'jour/mois/année
        Date1 = "25/10/2017 9:20:25,09"
        Date2 = "25/10/2017 10:13:45,14"
    If InStr(Date1, ",") Then Date1 = Left(Date1, (InStr(Date1, ",") - 1))
    If InStr(Date2, ",") Then Date2 = Left(Date2, (InStr(Date2, ",") - 1))
    MsgBox InterLatence(Date1, Date2), vbInformation, "depuis date = jour/mois/année" 'résultat exacte 00:53:20
    VBScript ne fait pas de différence, l'un ou l'autre donne le même résultat
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  15. #15
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 138
    Points : 76
    Points
    76

    Par défaut

    Impeccable, je commence sérieusement à avoir des données exploitables.
    Aurais tu une idée sur le moyen de mettre ces informations sur une sorte de tableau afin d’avoir un visu d’ensemble ?
    Du style :
    Rapport_Visu.xlsx

  16. #16
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 169
    Points : 8 462
    Points
    8 462

    Par défaut

    Citation Envoyé par NeriXs Voir le message
    Impeccable, je commence sérieusement à avoir des données exploitables.
    Aurais tu une idée sur le moyen de mettre ces informations sur une sorte de tableau afin d’avoir un visu d’ensemble ?
    Là on sort du titre de la discussion Extraction chaine de caractère entre deux balises.
    Clôture cette discussion (Bouton bas de page) puis fait en une nouvelle, avec une copie du rapport.txt. et ta nouvelle demande.
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

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

Discussions similaires

  1. Extraction chaine de caractères entre deux |
    Par urbanspike dans le forum Débutant
    Réponses: 3
    Dernier message: 04/10/2012, 17h46
  2. Remplacer une chaine de caractere entre deux balise
    Par xyrox dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2010, 15h11
  3. Réponses: 3
    Dernier message: 11/10/2010, 17h54
  4. Réponses: 4
    Dernier message: 27/08/2010, 05h57
  5. Extraction de texte situé entre deux balises
    Par morpho365 dans le forum Regex
    Réponses: 7
    Dernier message: 27/03/2007, 19h18

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