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

paco6999 Messages postés 1 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 17 août 2007 - 17 août 2007 à 01:29
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 24 août 2007 à 06:00
    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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 août 2007 à 18:26
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
23 août 2007 à 22:04
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
24 août 2007 à 06:00
 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
0
Rejoignez-nous