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 une ligne dans un fichier texte


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Rechercher une ligne dans un fichier texte
    Bonjour,

    j'ai un fichier nommé quartz.cfg qui contient ce genre de chose :
    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
     
     
    !
    ! Fichier de configuration
    !
    !   Définition du POSTE
    !
    !       00           O               Poste^.Idt
    !       01           M               Poste^.Code
    !       02           S4              Poste^.Abv
    !       03           S12             Poste^.Nom
    !       04           D               Poste^.HeureOuv
    !       05           D               Poste^.HeureFin
    !       06           S30             Poste^.NomReseau
    !
     
    00       0          7
    01       S4         BI7
    02       S12        Serveur
    03       S30        Bureau du Grand Chambellan ...
    06       S20        MCULBILLA0606
    07       S40        SOK:10.10.0.3|2050
     
    !
    !   Configuration matérielle
    !
    !       11           S10             CodeChiffres
    !       21           S12             Device billetterie
     
    11       S10        à&é"'(-è_ç
     
    21       S20        COM1:57600,N,8,1
    !21       S12        test
    22       S8         IER520
    !26       S          #SPC V6;#SPC C10;$STR B57600 D8 PN S0;#SPZ L1500;#SPA MH D-12;#SPZ Y20;
     
    51       S          Recette séance,seance,recette
    51       S          Recette calendrier,calendrier,rece_kld
    801  S  HUP
    J'ai besoin de récupérer la ligne qui commence par "00" (ici ligne 17)
    J'ai déjà réussi a faire ce script mais il ne fait que repérer les lignes qui contiennent "00" et moi j'ai besoin de récupérer la ligne qui commence par "00"



    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
     
    Const ForReading = 1
     
    Dim strSearchFor
    strSearchFor = "00"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("c:\sirius\Quartz.cfg", ForReading)
     
    do until objTextFile.AtEndOfStream
        strLine = objTextFile.ReadLine()
     
        If InStr(1, strLine, strSearchFor) <> 0 then
            Wscript.Echo "ligne trouvee"
    		Wscript.Echo strLine
        Else
            Wscript.Echo "ligne non trouvee"
        End If
    loop
    objTextFile.Close
    merci pour l'aide

  2. #2
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    bon, j'ai fait comme ceci qui me répère en plus le dernier caractère de la ligne trouvée

    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
     
    Dim WshNetwork
    Set WshNetwork = CreateObject("WScript.Network")
    strCompName = WshNetwork.ComputerName
    strUserName = WshNetwork.UserName
     
    Const ForReading = 1
     
    Dim strSearchFor
    strSearchFor = "00"
    Dim strIDposte
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("c:\sirius\quartz.cfg", ForReading)
     
    Do Until objTextFile.AtEndOfStream
        strLine = objTextFile.ReadLine()
     
        If InStr(strLine, strSearchFor) <> 0 Then
            If Left(strLine, 2) = "00" Then
                strIDposte = Right(strLine, 1)
                Wscript.Echo strIDposte
            End If
       End If
    Loop
    objTextFile.Close

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Salut,

    Tu peux utiliser la fonction SPLIT sur ta variable strLine.
    Si je ne dis pas de bêtise ton séparateur est une tabulation ?

    Si oui, donc utilises simplement Si non, transformes tes espaces et utilises le SPLIT.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne = Replace(strLine, " ", chr(9))
    tableau = Split(ligne, chr(9))

  4. #4
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    bonjour,

    j'ai une autre demande pour améliorer le script, j'ai dans un fichier ce genre de ligne :

    ou
    Comment je peux dire dans le script de récupérer tout ce qu'il y a après UTILID= ?

    quand c'est un nombre de caractères constant, j'utilise Right(strLine, nombre-caractère_a_recuperer), mais là cela n'est pas possible

    Merci

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut
    En supposant que le caractère espace suit la valeur à récupérer, sinon modifier le 2ém TextRech ligne 8.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim TextSoumis, TextRech, Retour
    Dim Deb, Fin
    TextSoumis = "je recherche ce qu'il y a après UTILID=CH141206 comment faire?"
    TextRech = "UTILID="
    Deb = InStr(1, TextSoumis, TextRech, vbTextCompare)
    If Deb <> 0 Then
        Deb = Deb + Len(TextRech)
        TextRech = " " 'si il y a toujours un espace après la valeur à rechercher
        Fin = InStr(Deb, TextSoumis, TextRech, vbTextCompare)
        Retour = Mid(TextSoumis, Deb, Fin - Deb)
        MsgBox Retour
        Else
        MsgBox "pas trouvé"
    End If
    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.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase 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.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    merci, je test...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    techninfo
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : techninfo

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    alors je n'ai pas réussi à adapter ton script au mien (désolé je ne suis pas développeur) :-)
    Voilà où j'en suis actuellement. Le script le trouve pas le texte et me renvoi une erreur au niveau de la ligne : strIDposte = Mid(strLine, Deb, Fin - Deb)


    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
    'on verifie que le fichier port.ini existe, sinon on quitte le script
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If (objFSO.FileExists("c:\alizee\port.ini")) Then
     
    'recuperation du nom d'ordinateur
    Dim WshNetwork
    Set WshNetwork = CreateObject("WScript.Network")
    strCompName = wshNetwork.ComputerName
     
    Const ForReading = 1
    Dim strSearchFor 'le texte que l'on recherche dans le fichier
    strSearchFor = "UTILID="
    Dim strIDposte 'Variable qui va contenir l'ID du poste trouvé dans le fichier
     
     
    'lecture du fichier port.ini afin de rechercher l'occurance "UTILID=" (strSearchFor)
    Set objTextFile = objFSO.OpenTextFile("c:\alizee\port.ini", ForReading)
     
    do until objTextFile.AtEndOfStream
        strLine = objTextFile.ReadLine()
     
     
    Dim Deb, Fin
    Deb = InStr(1, strLine, strSearchFor, vbTextCompare)
    If Deb <> 0 Then
        Deb = Deb + Len(strSearchFor)
        strSearchFor = " " 'si il y a toujours un espace après la valeur à rechercher
        Fin = InStr(Deb, strLine, strSearchFor, vbTextCompare)
        strIDposte = Mid(strLine, Deb, Fin - Deb)
        MsgBox strIDposte
        Else
        MsgBox "pas trouvé"
    End If
     
     
    'creation d un fichier texte sur un partage dont le nom du fichier est le nom du poste et l'ID trouvé dans le fichier texte
    	   Set fso = WScript.CreateObject("Scripting.FileSystemObject")
           Set NewFichier = fso.CreateTextFile("\\svcha\IDpostes$\" & strCompName & " " & "ID " & strIDposte & ".txt",TRUE)
     
     
     
    loop
    objTextFile.Close
    Else
    WScript.Quit
    End If
    WScript.Quit
    Pour info, voici le contenu du fichier port.ini :

    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
    [CONFIG]
    UTILID=CH2
    REPBASE=\\SVCHA\Alizee\Donnees
    AGENDA=N
    SAUVEGARDE=N
    PLANGRAPH=O
    SON_ACCUEIL=N
    SOUCHECPTA=0
    CREERFICHIER=0
    ActiveGFI=1
    MODE800600=0
    CurseurPos=0
    SERV_IP=SVCHA
    ActiveEffet=0
    EcranWide=0
    OPENOFFICE=0
    MENUMAXI=0
     
    [GEORGIE]
    APDEST=34
    NONVU=0
    VU=0
    FINI=0
    gCoulT=0
    gCoulFond=16777215
    UTILPLANNING=29
    UTILRESS=2
    PLVISHDEB=0700
    PLVISHFIN=1900
    RESSPLANNING=7
    SALLEPLANNING=10	12

  8. #8
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Deb <> 0 Then
        Deb = Deb + Len(strSearchFor)
        'strSearchFor = " " 'si il y a toujours un espace après la valeur à rechercher
        'Fin = InStr(Deb, strLine, strSearchFor, vbTextCompare)
        Fin = Len(strLine)
        strIDposte = Mid(strLine, Deb, Fin - Deb)
        MsgBox strIDposte
        Else
        MsgBox "pas trouvé"
    End If
    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.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase 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.
    👉 → → Ma page perso sur DVP ← ← 👈

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2014, 16h49
  2. Recherche d'une ligne dans un fichier texte
    Par ChristineGuerre dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 06/08/2014, 09h34
  3. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  4. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  5. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43

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