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] Script - Remplacement d'une chaîne de caractères dans un fichier txt


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 26
    Par défaut [VBS] Script - Remplacement d'une chaîne de caractères dans un fichier txt
    Bonjour le forum,

    J'ai un fichier txt (Directories pour lancement d'un application) dans lequel se trouve des chemins d'accès à des repertoires, du type "W:\XXX09\11-7-2014\Data".

    Mon but est de changer la date (ici "11-7-2014") par la date du jour.
    Le "W:\XXX09\" ne change pas.

    J'imaginais chercher la chaîne "W:\XXX09\" puis capturer la chaine qui suit jusqu'au prochain "\" et la remplacer par la fonction "Date". Seulement mes connaissance en VBS sont plus que limitées.

    Merci pour votre aide.

    @ plus

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    Salut, bienvenue sur DVP
    Une solution parmi d'autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim PhraseSoumise
    PhraseSoumise = "W:\XXX09\11-7-2014\Data"
    PhraseSoumise = Replace(PhraseSoumise, Split(PhraseSoumise, "\", , vbTextCompare)(2), Date, , , vbTextCompare)
    :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 ← ← 👈

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 26
    Par défaut
    Salut ProgElect!

    Merci pour ta réponse.
    Le truc c'est que la chaîne de caractère que je veux remplacer (ici "11-7-2014") n'est pas fixe. Elle va changer au fil de mes modifications puisque je vais la changer tous les jours.
    Je peux juste me fier à "W:\XXX09\" qui lui est invariant.

    Je ne sais pas si je me fais bien comprendre...

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    As tu fais l'essai ?
    Mis à part PhraseSoumise que tu dois remplir avec l'extrait de ton fichier, le code n'utilise pas la valeur du champs N°3 (index 2 du Split), il remplace ce champs par la date du jour en cours.
    :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 ← ← 👈

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 26
    Par défaut
    Non je n'ai pas fait l'essai. J'ai avancé sur ce code:
    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
    Dim Position, Position2, Texte, objFSO, objFile
     
    Const ForReading = 1 
    Const ForWriting = 2 
     
    Set objFSO = CreateObject("Scripting.FileSystemObject" ) 
    Set objFile = objFSO.OpenTextFile("C:\bvsys\TurnoutView3.7.2\Parameter\Directories.var", ForReading) 
     
    ' Tant que fichier n'est pas terminé 
        While Not objFile.AtEndOfStream 
          ' Lire une ligne 
            Texte = objFile.ReadLine 
            ' Recherche la position de caractère [W:\SIM09\]  
            Position = InStr(1, Texte, "W:\SIM09\", 1) 
            ' Capture le texte 1 caractère plus loin 
            Texte = Mid(Texte,(Position + 1)) 
    	Position2 = InStrRev(1, Texte, "\", 1)
    	Texte = Mid(Texte,1, (Len(Texte)-Position2))
    	strNewText = Replace(strText, Texte, Date)
        Wend
    objFile.Close  
     
    Set objFile = objFSO.OpenTextFile("C:\bvsys\TurnoutView3.7.2\Parameter\Directories.var", ForWriting) 
     
    objFile.WriteLine strNewText 
    objFile.Close
     
    msgbox("Le fichier Directories a été modifié.")
    Mais j'ai une erreur sur le InstrRev. Incompatibilité entre mon "\" et un string attendu..

    Est ce que ce code a des chances de fonctionner?

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        While Not objFile.AtEndOfStream
          ' Lire une ligne
            Texte = objFile.ReadLine
            ' Recherche la position de caractère [W:\SIM09\]
            'Position = InStr(1, Texte, "W:\SIM09\", 1)
            ' Capture le texte 1 caractère plus loin
            'Texte = Mid(Texte, (Position + 1))
            'Position2 = InStrRev(1, Texte, "\", 1)
            'Texte = Mid(Texte, 1, (Len(Texte) - Position2))
            'strNewText = Replace(strText, Texte, Date)
            strNewText = Replace(Texte, Split(Texte, "\", , vbTextCompare)(2), Date, , , vbTextCompare)
        Wend
    objFile.Close
    La seule condition, que chaque phrase soit de la même structure, contenu de la date égal troisième information de la phrase et séparateur de ces informations égal à "\".
    :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 ← ← 👈

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

Discussions similaires

  1. [Python 3.X] Script modifiant une chaîne de caractères dans plusieurs fichiers.
    Par Julien698 dans le forum Général Python
    Réponses: 4
    Dernier message: 09/09/2014, 13h41
  2. Réponses: 0
    Dernier message: 02/09/2014, 12h20
  3. Remplacer une chaîne de caractères dans un fichier
    Par pol2095 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 26/03/2014, 07h35
  4. Réponses: 0
    Dernier message: 19/01/2009, 10h00

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