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 traitement de fichiers texte


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Problème traitement de fichiers texte
    Bonjour forum!

    J'ai constitué un script (merci forum )afin de pouvoir manipuler mon ptit fichier ini....

    Le problème est que j'y arrive bien en tâches ponctuelles mais quand je veux rassembler les 2 en 1, c'est un peu plus touchy pour moi...

    Request for help!

    Grosso modo : j'ai besoin des 4 critères suivants :
    - Remplacer une ligne avec Regex ok!
    - en cas de ligne = panzani, pas de traitement du ini.
    - sinon concaténation d'un autre ini
    - insertion de 2 lignes à une endroit précis (pas encore faire)

    Voici le 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
     
     
    Const Lecture = 1, Ecriture = 2 
    Const Concatenation = 8
     
    Set oWshShell = Wscript.CreateObject("Wscript.Shell")
    Set oFso = CreateObject("Scripting.FileSystemObject")
     
    Set oRegEx = New RegExp
    oRegEx.Global = True
    oRegEx.Pattern = "(\n|^)" & "lignequejeveux" & ".*(\r|$)"
    Set f = oFso.OpenTextFile(monini, Lecture)
    Line = f.ReadAll
     
    while Not f.atEndOfStream 
    		if (f.ReadLine="panzani") then wscript.quit	
    Wend
    f.close 
     
    oFSo.OpenTextFile(monini, Concatenation).Write oFSo.OpenTextFile(monnouveauini).ReadAll 
    f.close
     
    NewLine = oRegEx.Replace(Line, vbLf & "lignequejeveuxfaireremplacer" & vbCr)
    Set f = oFso.OpenTextFile(monini,Ecriture)
    f.Write NewLine
    f.Close
    je pense que les readall et le readline ne s'aiment pas trop ensemble...

    Mon résultat ne fait que le remplacement alors que ma concaténation marche bien toute seule...

    Merci beaucoup pour votre help!

    Dark

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Re,

    Voilà, j'ai reséparé les 2 portions (remplacement et concaténation) et clairement quand je commente l'une, c'est l'autre qui fonctionne et inversement.

    Je voudrais donc comprendre pourquoi les 2 ensembles ne pourraient pas fonctionner ensemble.

    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
    Set f = oFso.OpenTextFile(monini, Lecture)
    Do until f.atEndOfStream 
    		if (f.ReadLine="panzani") then wscript.quit	
    loop
    f.close 
     
    Set oRegEx = New RegExp
    oRegEx.Global = True
    oRegEx.Pattern = "(\n|^)" & "lignequejeveux" & ".*(\r|$)"
    Set f = oFso.OpenTextFile(monini, Lecture)
    Line = f.ReadAll
    f.close
    NewLine = oRegEx.Replace(Line, vbLf & "lignequejeveuxfaireremplacer" & vbCr)
    Set f = oFso.OpenTextFile(monini,Ecriture)
    f.Write NewLine
    f.Close
     
    oFSo.OpenTextFile(monini, Concate).Write oFSo.OpenTextFile(monnouveauini).ReadAll 
    f.close
    Newbie en détresse...

    merci pour vos indications ou pistes car là je sèche...

    Dark

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    bonjour!

    Personne pour m'orienter?

    Il me manque clairement une logique vbs (voire développement) pour éviter de faire 2 scripts différents...

    Merci d'avance,

    Dark

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    tu devrais choisir un nom distinct pour le fichier lecture et celui ecriture, et pour pouvoir te relire si ton code grossit, il vaudrait mieux un truc subjectif.

    Et sinon, je vois monini en chemin de fichier, mais il n'est déclaré nulle part

    Et sinon vu la simplicité du script, tu peux peut être eviter regex, pour faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Do until monFichier.atEndOfStream
    maLigne = monFichier.ReadLine
    if maLigne = "blablabla" then
    MonNouveauIni.writeline("mon nouveau texte")
    else
    MonNouveauIni.writeline(maLigne)
    End If
    loop

  5. #5
    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
    Readall récupère toutes les données d'un fichier et place ton curser de fichier à la fin de celui-ci.
    ReadLine lit une ligne et place le curser à la ligne suivante.

    Il faut faire un choix :
    1) tu lis tout et cherche panzani et l'autre ligne avec le regexp.
    2) tu lis ligne par ligne et tu testes chaque ligne avec les regexp ou non.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    merci pour vos réponses, j'ai gardé la solution ligne par ligne de spantemonium (d'ailleurs toutes mes variables sont bien déclarées pas de souci), ce qui me permet d'avoir le luxe d'aller plus loin dans le sens où je veux insérer la ligne plus que la remplacer. Et pour cela, la méthode est nickel.

    Le hic, il ne m'écrit qu'une ligne sur 2...

    Partie du code concernée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Do until f.atEndOfStream
    	if f.ReadLine="panzani" then 
    		w.writeLine f.ReadLine
    		w.writeLine "buitoni"
    	else 
    		w.writeLine f.ReadLine
    	End If
    Loop
    J'ai bien mon buitoni mais comment se fait il qu'il n"y ait qu'une ligne sur 2?

    Merci!

    Dark

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/06/2015, 12h55
  2. [JDOM] Problème avec le traitement de fichier texte
    Par hedibox dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 24/08/2013, 14h49
  3. Problème STL lecture fichier texte
    Par Bourrine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/04/2007, 11h57
  4. [VB.NET] - Traitement de fichier texte
    Par titoff60 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/01/2007, 08h27
  5. Réponses: 13
    Dernier message: 24/10/2006, 14h17

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