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 : 37
    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 : 37
    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 : 37
    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
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 018
    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 018
    Points : 7 885
    Points
    7 885

    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

  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 : 37
    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 : 37
    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
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 018
    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 018
    Points : 7 885
    Points
    7 885

    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

+ 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 IO
    Réponses: 1
    Dernier message: 06/08/2014, 09h34
  3. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum IO
    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 IO
    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