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 :

[VBS] Commande de sous-chaîne


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Par défaut [VBS] Commande de sous-chaîne
    Bonjours,

    je cherche une commande me permetant d'agire sur une sous-chaîne de caractère a partir d'un caractère spécial, exemple :

    Date,Heure,NbIMP,@IP,5640,....
    Date,Heure,NbIMP,@IP,75640,....
    Date,Heure,NbIMP,@IP,335640,....

    J'aimerai récupérer le nombre les nombres seulement je ne peux pas faire de 'dim' comme vous avez pu remarquer, leurs nombre de caractère change !
    Je cherche une commande qui dirait "A partir de la 4ème virgule ( dans ce cas a nous )"

    Merci beaucoup, pour le reste du script je n'ai pas de problème pour le moment

  2. #2
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MaChaine = "Date,Heure,NbIMP,@IP,5640,...."
    Items = split(MaChaine, ",")
    MsgBox Items(4)

  3. #3
    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
    ou bien avec les expressions régulières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Data = "Date,Heure,NbIMP,@IP,5640,...,Date,Heure,NbIMP,@IP,75640,....Date,Heure,NbIMP,@IP,335640,...."
    Function RegExp(Motif)    
    Set objRegex = new RegExp
    objRegex.Pattern = Motif 
    objRegex.Global = True 
    objRegex.IgnoreCase = True
    Set Matches = objRegex.Execute(Data) 'Execution de la RegExp
    For Each Match in Matches  
        strMatchValue = Match.Value
        RegExp = strMatchValue
        MsgBox RegExp
    Next
    End Function
    RegExp("(\d+)")

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Par défaut
    Merci pour toutes vos réponses, cela m'aide a avancer, par contre le problème des expression régulière, c'est que j'ai en tous 16700 ligne a m'occuper donc les écrires une par une... très peu pour moi

  5. #5
    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
    Citation Envoyé par kiksora_01 Voir le message
    Par contre le problème des expression régulière, c'est que j'ai en tous 16700 ligne a m'occuper donc les écrires une par une... très peu pour moi
    je n'ai pas saisi ce que vous voulez dire ici
    Soyez plus explicite

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Par défaut
    l'éxemple que je vous ai donner ( en 3 lignes ), en réalité il y a en tous plus de 16000 lignes, et non pas 3

  7. #7
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 386
    Par défaut
    dans le même style que pc75, je propose ce qui suit :
    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
      const    lu    = "fichier à lire.txt"
               const   fics  = "resultat.txt"
     Set        oFso = CreateObject("Scripting.FileSystemObject")
         if not ofso.fileexists(lu) then _
                msgbox "fichier non trouvé",, lu : wscript.quit
      Const ForReading = 1 ' Lire
      Const ecrire        = 2 ' écrire
                 ficl= oFSO.GetFile(lu).path
            Set f    = oFso.OpenTextFile(ficl,ForReading)
            Set fe   = oFso.OpenTextFile(fics,ecrire,true)
      do
     MaChaine = f.readline   '"Date,Heure,NbIMP,@IP,5640,...."
     '                       après le "split",   item(4) aura la valeur 5640
     '                       pour le 1er enreg.  et ainsi de suite
        Items = split(MaChaine, ",")
                fe.writeline (item(4))
      loop until  f.AtEndOfStream
      f.Close : fe.close
    ' le fichier resultat.txt aura uniquement les nombres qui sont en 5ème position

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Si kiksora_01 est débutant en programmation VBScript, cela manque de clarté, il ne nous précise pas d'ailleurs qu'il veut écrire le résultat dans un fichiers.
    papyxy, j'ai utilisé ton code , inspiré de celui de pc75
    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
    Dim oFso, FichL, FichE 'variables objets
    Dim MaChaine, LesItems 'variables littérales
     
    Const ForReading = 1 ' Lire
    Const ForWriting = 2 ' Écrire
     
    Const ChemNomFichLut = "C:\Dossier\FichierAlire.txt"
    Const ChemNomFichEcrit = "C:\Dossier\FichierResultat.txt"
     
    Set oFso = CreateObject("Scripting.FileSystemObject")
    If Not oFso.FileExists(ChemNomFichLut) Then MsgBox "fichier non trouvé", , ChemNomFichLut: WScript.Quit
     
    'branchement des fichiers
    Set FichL = oFso.OpenTextFile(ChemNomFichLut, ForReading) 
    Set FichE = oFso.OpenTextFile(ChemNomFichEcrit, ForWriting, True)
     
    Do
        MaChaine = FichL.ReadLine   '"Date,Heure,NbIMP,@IP,5640,...."
                                'après le "split",   LesItems(4) aura la valeur 5640
                                'pour le 1er enreg.  et ainsi de suite
        LesItems = Split(MaChaine, ",") 'Éclate la ligne
        FichE.WriteLine (LesItems(4)) 'Écrit avec le 5ème indice du tableau LesItems dans le fichier résultat
    Loop Until FichL.AtEndOfStream
    FichL.Close: FichE.Close
     
    'nettoyage explicite
    Set FichL = Nothing
    Set FichE = Nothing
    Set oFso = Nothing
    'fichierResultat.txt aura uniquement les nombres qui sont en 5ème position
    'de chaque ligne lut dans le fichier FichierAlire.txt
    Le code de hackoofr pourrait aussi convenir et a des chances d'être plus rapide.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. commande Dos sous VBS
    Par damsmut dans le forum VBScript
    Réponses: 1
    Dernier message: 20/04/2008, 19h32
  2. commande dos sous oracle
    Par tcy dans le forum Oracle
    Réponses: 4
    Dernier message: 18/07/2005, 11h51
  3. Réponses: 5
    Dernier message: 19/04/2005, 08h50
  4. Commande lsmod sous Fedora Core 2
    Par bartmarley dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/12/2004, 18h07
  5. [String] Récupérer une sous -chaîne sans split
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 19/07/2004, 14h45

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