[VBScript] Vérifier présence de 2 mots dans un fichier log

Signaler
Messages postés
1
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
17 août 2007
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
    Bonjour à tous,


J'ai besoin de faire un script vb qui va, dans une boucle:

- lire un fichier log.

- vérifier si 2 mots sont présents; si les 2 sont présents, résultat: ok; si un des 2 mots est manquant, résultat: ko.

- dans tous les cas, écriture du résultat dans un fichier texte, avec comme syntaxe: nom_serveur;résultat


Je le fais dans le but de me simplifier la vie, dans le cadre d'une
vérification concernant 900 machines, par tranche de 150 à 200 machines
par session.


Si quelqu'un peut me donner des débuts de piste, sachant que je ne sais
pas s'il faut que j'utilise StreamReading ou OpenAsTextStream pour la
lecture du fichier, à la base, selon la methode utilisée (s'il en
existe une) pour localiser les 2 mots importants.


Merci d'avance,


paco

3 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
36
salut,

tu devrais trouver une piste sur www.codyx.org

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonsoir,

Ci-dessous, deux exemples.

Un fichier log, de par sa nature, pouvant être volumineux, la lecture ligne par ligne me semble préférable.
Donc, j'opterai sur l'exemple2.

Option Explicit
Const fichierLog = "D:\SCRIPTS\Fichiers\fichier.txt"
Const chaine1 = "JEAN"
Const chaine2 = "123"

MsgBox Exemple1,,"exemple avec OpenTextfile et ReadAll"
Msgbox Exemple2,,"exemple avec OpenTextStream et ReadLine"
'**********************************************************
Function Exemple1()
Dim objFso, objFile
Dim strFile

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.OpenTextFile( fichierLog, 1)

strFile =  objFile.ReadAll
objFile.Close

If UBound(Split(strFile, chaine1)) <> 0 And _
   UBound(Split(strFile, chaine2)) <> 0 Then
   Exemple1 = "Function Exemple1 : chaine1 et chaine2 trouvées"
 Else
   Exemple1 = "Function Exemple1 : chaine1 et chaine2 non trouvées"
End If
Set objFile = Nothing
Set objFso = Nothing
End Function
'**********************************************************
Function Exemple2()
Dim objFso, objTextStream
Dim strLine, strChaine1, strChaine2strChaine1 False : strChaine2 False

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFso.OpenTextFile(fichierLog, 1)
Do While Not objTextStream.AtEndOfStream
   strLine = objTextStream.ReadLine
      If Ubound(split(strLine, chaine1)) >1 Then strChaine1 True   If Ubound(split(strLine, chaine2)) >1 Then strChaine2 True
      If strChaine1 True And strChaine2 True Then
      Exemple2 = "Function Exemple2 : chaine1 et chaine2 trouvées"
      Exit Do
   End if
Loop
ObjTextStream.CloseIf strChaine1 False Or strChaine2 False Then _
   Exemple2 = "Function Exemple2 : chaine1 et chaine2 non trouvées"
Set objTextStream = Nothing
Set objFso = Nothing
End Function

jean-marc
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

Correction, inutile de passer par un tableau.
Dans les 2 exemples proposés, remplacer
Ubound(split(strLine, chaine1)) >= 1 parInStr(1, strLine, chaine1) <> 0
et
Ubound(split(strLine, chaine2) >= 1 parInStr(1, strLine, chaine2) <> 0

jean-marc