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 :

Récupérer dans un fichier texte une chaine + n ligne


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    technicien BE
    Inscrit en
    Septembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien BE
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2022
    Messages : 3
    Par défaut Récupérer dans un fichier texte une chaine + n ligne
    Bonjour,

    J'ai un fichier texte sous ce format par exemple (lignes aléatoires),
    je souhaiterais récupérer à chaque fois les lignes de "RECUPERER" plus les 4 lignes après (il y en a un nombre aléatoire)
    Et les noter toutes dans un nouveau fichier texte
    Je ne vois pas comment faire

    Merci
    Nom : Capture.PNG
Affichages : 204
Taille : 3,8 Ko

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 658
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 658
    Par défaut
    FileSystemObject + TextStream => lecture ligne par ligne (ReadLine)
    https://learn.microsoft.com/en-us/of...extfile-method
    https://learn.microsoft.com/en-us/of...eadline-method
    Comment tu sais combien de lignes tu dois lire après "RECUPERER" ou quand tu dois arrêter de lire ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    technicien BE
    Inscrit en
    Septembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien BE
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2022
    Messages : 3
    Par défaut
    Merci pour la réponse,

    Le nombre de ligne après la chaine recherchée est toujours le même et il faut que je le récupère le nombre de fois ou il est dans le fichier
    La seule chose qui n'est pas variable dans le fichier texte c'est le bloc de la chaine et les 4 lignes qui suivent. Mais ce bloc peut être présent n fois dans le fichier.
    J'avais vu les fonctions InStr pour localiser la chaine et Mid pour récupérer la suite mais je n'arrive pas à les appliquer.

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Pouvez-vous nous poster un exemple de fichier Input et le résultat attendu de l'output par copier-coller et non pas par capture d'écran

  5. #5
    Futur Membre du Club
    Homme Profil pro
    technicien BE
    Inscrit en
    Septembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien BE
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2022
    Messages : 3
    Par défaut
    Bonjour,

    Voilà les deux fichiers exemple
    Input.txtResultat.txt

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 658
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 658
    Par défaut
    Instr ça donne l'indice de la chaine recherché dans la chaine globale
    Mid ça permet d'extraire une chaine à partir d'une position (issu par exemple de InStr) et d'une certaine taille.

    Mais comme tu as un fichier avec des lignes, autant lire par lignes avec les méthodes de TextStream (cf mes liens précédents)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 304
    Par défaut
    bonjour,

    le fichier resultat.txt
    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
    nop
    Chaine
    0xx
    ACD
    10
    BTC
    nop
    nop
    Chaine
    0zz
    ACD
    10
    BTC
    Chaine
    0ff
    ACD
    10
    BTC
    Chaine
    0qq
    ACD
    10
    BTC
    nop
    nop
    nop
    Chaine
    0pp
    ACD
    10
    BTC
    nop
    nop
    le code vbs (dans le même répertoire que le fichier précédent)
    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
    Option explicit
    Dim fso, file, sfile, tag, reg, matches, match
    ' lecture contenu fichier
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.OpenTextFile("Resultat.txt",1,false)
    sfile = file.ReadAll
    file.Close
    ' parsing regexp
    Set reg = New RegExp 
    tag = "Chaine"
    reg.Pattern = tag  & "\r\n(.+\r\n){4}"
    reg.Global = True
    Set matches = reg.Execute(sfile)
    Set file = fso.OpenTextFile("outparsing.txt",2,true)
    For Each match In matches
      file.Write match.Value
    Next
    file.Close
    Msgbox "Résultat du parsing dans 'outparsing.txt'"
    ps : suppose que "Chaine" se termine par un CRLF standard comme la dernière capture du fichier
    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

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/03/2014, 14h45
  2. Réponses: 2
    Dernier message: 07/03/2012, 11h00
  3. Réponses: 0
    Dernier message: 15/11/2011, 16h42
  4. Rechercher dans un fichier texte une valeur
    Par promenneur77 dans le forum Langage
    Réponses: 7
    Dernier message: 20/01/2008, 20h46
  5. Réponses: 3
    Dernier message: 10/10/2007, 10h15

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