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 :

Remplacer une ligne dans un fichier texte !


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut Remplacer une ligne dans un fichier texte !
    Bonjour, a priori simple, tranquille, et pourtant.

    Je débute un peu dans VBS, que j'ai choisi pour remplacer une ligne dès qu'elle commence pas f45 sachant que la suite peut varier varie jusqu'à la fin de la ligne.

    f45dfdff
    f45wwwfdsfs
    serait à remplacer par
    f45uneligne

    - j'ai pas trouvé de modèle "ajustable" sur le net
    Depuis 3 semaines ;
    - J'ai composé un script avec replace ; qui marche mais pas trouvé le caractère pour remplacer jusqu'à la fin de ligne ( $ en vb mais en vbscript ? ) ; là ; la suite de la ligne est poussée vers la droite

    - J'ai essayé regex, pas bon
    - j'ai essayé une boucle do while, avec un strcomp ( mais faut que la ligne soit exacte ce qui n'esp pas possible ), puis instr, le principe serait bon mais le script s'allonge, je patauge et i marche po ! Je parle pas des tableaux ( trop compliqué ).

    Auriez vous une solution simple, s'il vous plaît ? Dans mon entourage de dévs, tous le monde dis ; facile, mais personne n'a pu donner la soluce qui marche.

    D'autre part, le vbs est-il le meilleur langage pour ce script ?
    Quels sont les références complètes sur le net ( ou un livre ) et y'a t'il un logiciel pour composer et debugger les scripts ?

    Merci d'avance,

    Toulouz1

  2. #2
    Membre expérimenté
    Avatar de Dung-Tri
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Par défaut Remplacement de chaine
    Pourrez tu mettre ton code source.

    Ou ce trouve les données? Dans un fichier ?

  3. #3
    Membre expérimenté
    Avatar de Dung-Tri
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Par défaut Proposition
    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
    Dim Explorer
    Dim Stream
    Dim ligne As String
     
    Set Explorer = CreateObject("Scripting.FileSystemObject")
    Set Stream = Explorer.OpenTextFile("C:\Test\MonFichier.txt", ForReading, False)
     
    Do While Not Stream.AtEndOfStream
        ligne = Stream.ReadLine
        ligne = Left(ligne, 3) & "uneligne"
    Loop
     
    Stream.Close
     
    Set Explorer = Nothing
    Essai ca et dit moi si ca te va.

  4. #4
    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
    Bienvenue sur DVP toulouz1
    Citation Envoyé par toulouz1
    remplacer une ligne dès qu'elle commence pas f45
    donc ajoute au code de Dung-Tri une condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Do While Not Stream.AtEndOfStream
        	ligne = Stream.ReadLine
            If left(ligne, 3) = "f45" Then
    	 Left(ligne, 3) & "uneligne"
    	End If
    Loop
    :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 expérimenté
    Avatar de Dung-Tri
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Par défaut Oui
    Et puis dans le cas d'un VBS faut enlevé le typage "As String"

    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
     
    Dim Explorer
    Dim Stream
    Dim ligne
     
    Set Explorer = CreateObject("Scripting.FileSystemObject")
    Set Stream = Explorer.OpenTextFile("C:\Test\MonFichier.txt", ForReading, False)
     
    Do While Not Stream.AtEndOfStream
        ligne = Stream.ReadLine
        If left(ligne, 3) = "f45" Then
    	 ligne = Left(ligne, 3) & "uneligne"
        End If
    Loop
     
    Stream.Close
     
    Set Explorer = Nothing
    J'oublie tous le temps entre VB et VBS

  6. #6
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    je ne peux pas tester complètement, le script ci-dessus car il fait une erreur

    Par contre, d'accord, là c'est clair ;

    - la recherche des trois premiers caractères avec left
    - la condition ( sauf le "not" je vais le bosser avec des exos )
    - le & "uneligne " : c'est le mieux que j'avais trouvé mais il me semble qu'il "poussait" le reste de la ligne vers la droite, il ne la remplaçait pas jusqu'à la fin de ligne. ( J'avais essayé vbnewline pour passer à la ligne )

    Ce dernier script est court, clair, lisible, OK pour le VBS alors. J'avais pas trouvé le traitement par ligne. Dis Dung-Tri, quels supports tu utilises pour scripter ? A partir du VB ? Quelle manuel de réf en ligne ou papier ( bien fait ) as-tu ? Avec quel livre de cours, quel site de référence complet as-tu appris ? Combien as-tu de pratique ?

    PS : je n'ai pas collé de script car il y en a 4 différents, inutilement longs et aucun ne fonctionne ; je ne veux donc pas encombrer inutilement le forum pour les recherches de ceux d'après.

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Hum ... Le code proposé ne modifie en rien le fichier originale, et je pense que c'est ce que toulouz1 veut par sa demande.

    En effet le code proposé, lit ligne par ligne, modifie la variable temporaire, puis passe à l'autre ligne et ferme le fichier.

    En VBS les fichiers textes n'étant pas ouvrable en lecture ecriture en même temps, aucun changement n'est effectué dans le fichier. Il compléter le script.

    Avant la boucle, il faut créer/ouvrir un fichier temporaire qui servira à stocker le résultat des modifications. Il est aussi possible de passer par les dictionnaires, et de stocker la ligne et en clé un variable bouléene indiquant la ligne est à changer. l'intérêt de ce stockage et dans la limitation du nombre de fichier existant sur le disque dur, peut être un gain de performance. Mais c plus compliqué donc on reste sur l'idée du 2eme fichier.

    Dans la boucle, il suffit alors d'écrire dans le fichier le contenu de ligne (après la condition bien évidement pour prendre en compte les changements éventuel).
    Puis il suffira aussi de flusher et fermer le fichier après la boucle.

    Ensuite tu peux supprimer le fichier originale et renommer/deplacer le fichier temporaire avec le nom du fichier originale.

    Ce dernier script est court, clair, lisible, OK pour le VBS alors. J'avais pas trouvé le traitement par ligne. Dis Dung-Tri, quels supports tu utilises pour scripter ? A partir du VB ? Quelle manuel de réf en ligne ou papier ( bien fait ) as-tu ? Avec quel livre de cours, quel site de référence complet as-tu appris ? Combien as-tu de pratique ?
    Personnellement, je te conseille d'utiliser ce site, la FAQ de ce site, et les tutoriaux VB comme Aide.

    Tu peux aussi allez faire un tour sur le site MSDN de microsoft (tape MSDN et VBScript sur google).

    Mais pour tous les sujets simples comme celui-ci tu trouveras les réponses dans les discussions sur ce site, et dans la FAQ.
    Après recherche si tu ne trouve pas de solution, pose tes questions comme tu l'as fait là, en créant un sujet et nous te guiderons de notre mieux.

    EDIT: Comme je l'ai dit dans mon autre réponse, le script n'est pas forcément complet, cela dépend si tu veux que les modifications soit enregistrés dnas le fichier ou non.

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

Discussions similaires

  1. Supprimer une ligne dans un fichier texte
    Par bsketeur dans le forum Langage
    Réponses: 26
    Dernier message: 28/06/2006, 10h36
  2. supprimer une ligne dans un fichier texte
    Par linouline dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 23h02
  3. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  4. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  5. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43

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