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 :

Rechercher plusieurs occurences dans un fichier


Sujet :

VBScript

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut Rechercher plusieurs occurences dans un fichier
    Bonjour,

    J'ai un dump dhcp dans lequel j'ai plein d'infos.

    Dans ce fichier je cherche 3 infos particulières :
    - Case instr(Ligne1,("Dhcp Server " & dhcp_server1 & " add scope ")) > 0
    Exemple : Dhcp Server 10.0.0.1 add scope 10.0.2.0 255.255.255.0 "Nom Mon Scope" "Desc Mon scope"


    - Case instr(Ligne1,("Dhcp Server " & dhcp_server1 & " Scope " & SCOPE & " set state")) > 0
    Exemple : Dhcp Server 10.0.0.1 Scope 10.0.2.0 set state 1


    -Case instr(Ligne1,("Dhcp Server " & dhcp_server1 & " Scope " & SCOPE & " set optionvalue 51 DWORD """)) > 0
    Exemple : Dhcp Server 10.0.0.1 Scope 10.0.2.0 set optionvalue 51 DWORD "691200"
    Les 2 premières infos recherchées sont toujours dans le fichier, mais il se peut que la 3eme info recherchée n'y soit pas.
    Exemple : Dhcp Server 10.0.0.1 Scope 10.0.2.0 set optionvalue 51 DWORD "691200"

    Ci-desous mon 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
     
    Set Fichier_Parcourir2 = objFSO.OpenTextFile("dump.txt", ForReading)
    Set Fichier_Resultat2 = objFSO.CreateTextFile(path_creer2, ForWriting, ModeAscii)
     
    dhcp_server1 = "10.0.0.1"
     
    Do While Fichier_Parcourir2.AtEndOfStream <> True  
    	Contenu_All2 = Fichier_Parcourir2.ReadAll
     
    	Tableau1 = Split(Contenu_All2, vbNewLine)'Eclate le contenu ligne par ligne du fichier 2 en faisant un tableau	 
     
    	For L = 0 To UBound(Tableau1)
    		Ligne1 =  (Tableau1(L))	
     
    		Select Case True
     
    				'Exemple : Dhcp Server 10.0.0.1 add scope 10.0.2.0 255.255.255.0 "Nom Mon Scope" "Desc Mon scope"
    				Case instr(Ligne1,("Dhcp Server " & dhcp_server1 & " add scope ")) > 0
    				sTableau1 = split(Ligne1," ")
    				sTableau2 = split(Ligne1,"""")
    				SCOPE = sTableau1(5)
    				MASK_SCOPE = sTableau1(6)
    				NOM_SCOPE = sTableau2(1)
    				DESC_SCOPE = sTableau2(3)
     
    				'Exemple : Dhcp Server 10.0.0.1 Scope 10.0.2.0 set state 1
    				Case instr(Ligne1,("Dhcp Server " & dhcp_server1 & " Scope " & SCOPE & " set state")) > 0
    				sTableau1 = split(Ligne1," ")
    				ETAT_SCOPE = sTableau1(7)
     
    				'Exemple : Dhcp Server 10.0.0.1 Scope 10.0.2.0 set optionvalue 51 DWORD "691200" 
    				Case instr(Ligne1,("Dhcp Server " & dhcp_server1 & " Scope " & SCOPE & " set optionvalue 51 DWORD """)) > 0
    				sTableau1 = split(Ligne1," ")
    				LEASE_SCOPE = replace(sTableau1(9),"""","")
     
    				Fichier_Resultat2.writeline SCOPE & vbtab & MASK_SCOPE & vbtab & NOM_SCOPE & vbtab & DESC_SCOPE & vbtab & ETAT_SCOPE & vbtab & LEASE_SCOPE
     
    		End Select
    Loop
    Deja est ce que CASE est la meilleure solution dans mon cas ?

    J'écris ma ligne quand je rentre dans mon 3eme case uniquement.

    Comment faire pour écrire ma ligne meme si je ne rentre pas dedans ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier_Resultat2.writeline SCOPE & vbtab & MASK_SCOPE & vbtab & NOM_SCOPE & vbtab & DESC_SCOPE & vbtab & ETAT_SCOPE & vbtab & LEASE_SCOPE
    J'espere etre assez clair.

    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2012
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Pour écrire la ligne dans n'importe-quel Case (du moment qu'il y en a au-moins un de valide), il va falloir soit copier la ligne à exécuter dans tous les Case, soit rajouter à chaque fois "found = True" et à la sortie du EndCase une vérif si "found" est sur "True". En s'assurant que "found" soit sur "False" à chaque début d'itération.

    L'utilisation du Case est le plus simple si tu as 3 opérations différentes à faire suivant le choix, je pense.

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    dans la mesure où
    Les 2 premières infos recherchées sont toujours dans le fichier
    pas besoin de définir un flag supplémentaire
    placer simplement la writeline immédiatement après le End Select
    le trick du Select Case True est parfaitement adapté à la situation
    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

Discussions similaires

  1. Rechercher plusieurs mots dans un fichier avec sed
    Par DevServlet dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/01/2012, 14h40
  2. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 22h58
  3. Réponses: 15
    Dernier message: 13/10/2009, 13h53
  4. Recherche Occurance dans un fichier Txt
    Par spirit daemon dans le forum Débuter
    Réponses: 5
    Dernier message: 29/11/2007, 22h10
  5. Recherche plusieurs termes dans un fichier
    Par Kaoziun dans le forum Linux
    Réponses: 2
    Dernier message: 03/10/2006, 15h02

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