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 :

Problème de modification d'une chaine de caractères spécifques dans un fichier


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut Problème de modification d'une chaine de caractères spécifques dans un fichier
    Bonjour,

    voilà mon soucis. dans un fichier .ini, j'ai quelque part une ligne qui est du style KEYNAME=\\NOMSERVEUR\NOMPARTAGE\NOM.ID

    je voudrai faire un script qui me remplacerait cette ligne par : KEYNAME=\\NOMSERVEUR\NOMPARTAGE\NOM\NOM.ID

    Voilà... comme je suis débutant en VBscript, je n'y arrive pas..

    merci pour votre aide.

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

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    RE-BIENVENU sur DVP;

    Teste ce bout de
    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 ForReading = 1, ForWriting = 2
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    set f = fso.OpenTextFile("Fichier.ini", ForReading , False)
    NouveauText=""
     DO While Not F.AtEndOfStream
       LigneLue = F.ReadLine
       If InStr( 1, LigneLue, "KEYNAME=\\NOMSERVEUR\NOMPARTAGE\NOM.ID")> 0 Then 
       'totalité de la ligne au cas où il y aurait d'autres occurences qu'on veut garder
       ' sinon on fait : If InStr( 1, LigneLue, "\NOMP.ID")> 0 Then
          LigneLue = Replace(LigneLue, "\NOM.ID", "\NOM\NOM.ID")
          'ou encore : LigneLue = "KEYNAME=\\NOMSERVEUR\NOMPARTAGE\NOM\NOM.ID"
       End If
       NouveauText = NouveauText & LigneLue & vbNewLine
     Loop 
     F.Close
     set f = fso.OpenTextFile("Fichier.ini", ForWriting , False)
     F.Write NouveauText
     F.Close
    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

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    Bonjour et merci pour ton aide.

    cela dit, j'ai certainement mal précisé que NOM.ID est une valeur que je ne connais pas et qu'en fait je veux intégré ce NOM en tant que nom de répertoire avant mon nom de fichier NOM.ID.

    J'espère que je suis plus clair.

    merci.

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

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    J'espère que je suis plus clair..
    Pas du tout, tu ne fais que répéter ce que tu as écrit dans le post #1.

    Serait-il possible d'avoir un autre exemple à partir du fichier ini et, en plus, les modifications attendues
    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

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    En fait j'ai cru bon de préciser car dans ton code tu mets : LigneLue = Replace(LigneLue, "\NOM.ID", "\NOM\NOM.ID") et NOM en tant que chaine et pas variable or je ne vois pas comment tu extrais la valeur NOM de NOM.ID. tu vois ce que je veux dire?

    en fait si j'ai KEYNAME=\\NOMSERVEUR\NOMPARTAGE\toto.ID je veux retrouver KEYNAME=\\NOMSERVEUR\NOMPARTAGE\toto\toto.ID
    ou encore
    si j'ai KEYNAME=\\NOMSERVEUR\NOMPARTAGE\titi.ID je veux retrouver KEYNAME=\\NOMSERVEUR\NOMPARTAGE\titi\titi.ID

  6. #6
    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,

    La fonction InStrRev() permet de récupérer la position d'uns sous-chaine dans une chaine en partant de la fin.
    Donc, tu cherches la position du "/" et la fonction Mid() te permettra d'isoler la chaine que tu souhaites.

  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 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Bonjour;
    Là, cela devient plus clair .
    Voici le script modifié pour répondre à 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
    19
    20
    21
    Const ForReading = 1, ForWriting = 2
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    set f = fso.OpenTextFile("Fichier.ini", ForReading , False)
    NouveauText=""
     DO While Not F.AtEndOfStream
       LigneLue = F.ReadLine
       If LigneLue <> "" Then 
           longueur =  InstrRev( LigneLue, "\") 
           Restedelachaine = Mid(LigneLue, Longueur+1)
           NomAjout = Mid(Restedelachaine, 1, InstrRev(Restedelachaine, ".") - 1)
           LigneLue = Left(LigneLue, Longueur) & NomAjout & "\" & Mid(Restedelachaine, 1)
           NouveauText = NouveauText & LigneLue & vbNewLine
        Else ' Pour garder la structure générale du fichier
           NouveauText = NouveauText & LigneLue & vbNewLine
        End If
     Loop 
     F.Close
     set f = fso.OpenTextFile("Fichier.ini", ForWriting , False)
     F.Write NouveauText
     F.Close
    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

Discussions similaires

  1. [Batch] Rechercher et renommer une chaine de caractère complexe dans un fichier texte
    Par mrcanardwc dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 24/06/2011, 13h02
  2. Réponses: 4
    Dernier message: 10/07/2008, 13h34
  3. Modification d'une chaine de caractères
    Par banju dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2008, 12h07
  4. modification d'une chaine de caractère
    Par rlongin dans le forum SAS Base
    Réponses: 2
    Dernier message: 21/05/2008, 17h55

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