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 :

Analyse fichier, manipulation de chaine de caractères.


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Analyse fichier, manipulation de chaine de caractères.
    Bonjour à tous,

    Je fais appel à vos connaissances VBS car les miennes sont trés limitées.

    J'ai un fichier crontab (programme qui permet de planifier l'exécution de scripts) dans lequel je souhaite récupérer des lignes, voici un exemple du contenu du fichier:



    ##Job1##
    30 18 * * 1-5 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Processus.Toto

    ##Job2##
    30 19 * * 1-5 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Processus.toto2

    ##Job3##
    45 00 * * 2-6 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Processus.toto3

    ##Job4##
    45 15 * * 6 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Rapport.PurgeRapportDonnee

    ##Job5##
    00 16 * * 6 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Rapport.PurgeRapportPhysique

    Dans mon script vbs je parcours ce fichier et je souhaite récupérer les lignes après le "EXE\"

    Pour le moment la seule chose que j'ai fait et qui se rapproche un peu de mon souhait c'est de récupérer les lignes à partir d'une position de caractère avec la fonction Mid:

    Jobline=crontab.ReadLine
    temp = Mid(JobLigne,38)

    Ce qui me permet de récupérer ceci:

    toto.appli.Console.Batch.exe Processus.Toto
    toto.appli.Console.Batch.exe Processus.toto2
    to.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    to.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    to.appli.Console.Batch.exe Rapport.PurgeRapportPhysique

    Mais ce n'est pas propre car sur les lignes n'ayant pas le même nombre de caractère au début, j'ai le "toto" qui est tronqué (les 3 dernières lignes).

    Sauriez vous quelle fonction ou moyen je pourrais utiliser pour par exemple récupérer la ligne après "EXE\" ce qui me permettrait d'avoir toutes les lignes en commençant par toto ?

    toto.appli.Console.Batch.exe Processus.Toto
    toto.appli.Console.Batch.exe Processus.toto2
    toto.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    toto.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    toto.appli.Console.Batch.exe Rapport.PurgeRapportPhysique

    J'espère que vous me comprendrez ^^

    Merci d'avance pour votre aide.

  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
    Citation Envoyé par Techadom Voir le message
    Bonjour à tous,

    Je fais appel à vos connaissances VBS car les miennes sont trés limitées.

    J'ai un fichier crontab (programme qui permet de planifier l'exécution de scripts) dans lequel je souhaite récupérer des lignes, voici un exemple du contenu du fichier:



    ##Job1##
    30 18 * * 1-5 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Processus.Toto

    ##Job2##
    30 19 * * 1-5 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Processus.toto2

    ##Job3##
    45 00 * * 2-6 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Processus.toto3

    ##Job4##
    45 15 * * 6 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Rapport.PurgeRapportDonnee

    ##Job5##
    00 16 * * 6 D:\appli\env\Batch\EXE\toto.appli.Console.Batch.exe Rapport.PurgeRapportPhysique

    Dans mon script vbs je parcours ce fichier et je souhaite récupérer les lignes après le "EXE\"

    Pour le moment la seule chose que j'ai fait et qui se rapproche un peu de mon souhait c'est de récupérer les lignes à partir d'une position de caractère avec la fonction Mid:

    Jobline=crontab.ReadLine
    temp = Mid(JobLigne,38)

    Ce qui me permet de récupérer ceci:

    toto.appli.Console.Batch.exe Processus.Toto
    toto.appli.Console.Batch.exe Processus.toto2
    to.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    to.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    to.appli.Console.Batch.exe Rapport.PurgeRapportPhysique

    Mais ce n'est pas propre car sur les lignes n'ayant pas le même nombre de caractère au début, j'ai le "toto" qui est tronqué (les 3 dernières lignes).

    Sauriez vous quelle fonction ou moyen je pourrais utiliser pour par exemple récupérer la ligne après "EXE\" ce qui me permettrait d'avoir toutes les lignes en commençant par toto ?

    toto.appli.Console.Batch.exe Processus.Toto
    toto.appli.Console.Batch.exe Processus.toto2
    toto.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    toto.appli.Console.Batch.exe Rapport.PurgeRapportDonnee
    toto.appli.Console.Batch.exe Rapport.PurgeRapportPhysique

    J'espère que vous me comprendrez ^^

    Merci d'avance pour votre aide.
    Bonjour,

    La fonction inStr() te renvoie la position d'une sous-chaine dans une chaine.

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Supposons vous avez déjà un TextStream chrontab bien-tempéré. Je peux vous proposer une méthode regexp que je préfère mieux de beaucoup.
    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
    'que chrontab soit l'objet TextStream déjà établi
    s=chrontab.readall
    crontab.close
    set crontab=nothing
     
    set rx=new regexp
    with rx
        .global=true
        .multiline=true
        .ignorecase=false
        .pattern="(\\EXE\\)(.*?)$"
    end with
     
    set cm=rx.execute(s)
     
    for each m in cm
        'ceci montre ce que vous cherchez 
        wscript.echo m.submatches(1)
    next

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses.

    La fonction inStr() renvoie une position, c'est pas vraiment ce que je veux faire.

    L'expression régulière semble être la bonne piste mais je n'ai pas tout compris
    Je vais creuser dans ce sens pour intégrer ça à mon script, merci.

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut


    Peut-être que ce listng répond à ta demande :
    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
    Option Explicit
     
      Const ForReading = 1
        Dim fso, Fich, tx, Ret, NomFichier, intPos
     
         NomFichier = "C:\Temp\Source.txt"
         Set fso = CreateObject("Scripting.FileSystemObject")
         Set Fich = fso.OpenTextFile(NomFichier, ForReading, False)
         Ret = ""
     
         While Not Fich.AtEndOfStream
            tx =Fich.ReadLine
            intPos = InStr(1,tx,"\EXE\") 
            If intPos > 0 Then 
               Ret = Ret & Mid(tx,intPos +5) & vbNewLine
            End If
         WEnd
         MsgBox Ret
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci l_autodidacte

    Ton code renvoie exactement ce que je voudrais obtenir, mais maintenant il faut que je l'adapte à mon script parce que jusqu'à présent la partie analyse de mon fichier crontab était faite comme ceci:


    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
    i = 0
    Do While Not crontab.AtEndOfStream 
        jobligne = crontab.ReadLine
        If (Right(jobligne, 3) = "vbs" or Right(jobligne, 3) = "bat" or InStr(JobLigne,".exe"))  Then
     
            ReDim Preserve listejob(i)
            temp = Mid(JobLigne,38)
            ListeJob(i) = Replace(temp,".vbs","")
            ListeJob(i) = Replace(temp,".bat","")
     
     
            i = i + 1
        End If
    Loop
    crontab.Close

    P.S: Comment fait-on pour insérer une fenêtre de code dans un message ? ^^

  7. #7
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Comment fait-on pour insérer une fenêtre de code dans un message ?
    J'avoue n'avoir rien compris à cette question.
    Essaie d'expliquer un peu.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    C'était une question hors-sujet
    Je me demandais comment faisait-on, lorsqu'on écrit un message sur le forum, pour publier les lignes de code, tu sais avec le formatage spéciale (numéro de lignes, fenêtre avec ascenseur, fond bleu,..) mais apparemment ça se fait automatiquement. Bref c'était nase comme question désolé lol

  9. #9
    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
    Pour information, Aide sur l'utilisation des boutons
    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 ← ← 👈

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci ProgElecT

Discussions similaires

  1. Manipulation des chaines de caractères en c
    Par developppez dans le forum C
    Réponses: 8
    Dernier message: 29/04/2007, 13h04
  2. Réponses: 4
    Dernier message: 14/10/2006, 23h38
  3. Diviser un fichier selon une chaine de caractères
    Par navis84 dans le forum Langage
    Réponses: 4
    Dernier message: 19/06/2006, 11h51
  4. Réponses: 4
    Dernier message: 20/08/2004, 10h59

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