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
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1
    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
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    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 éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    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
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1
    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 éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    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
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1
    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 actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    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
    Windows 10
    Microsoft Edge (64 bits)
    Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)

  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 174
    Points
    17 174
    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.
    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 ← ← 👈

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