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 :

Fichier : lire, écrire, modifier


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Fichier : lire, écrire, modifier
    Bonjour,

    Je voudrais savoir d'abord comment ajouter une ligne à un fichier texte (à la fin)

    Ensuite, comment lire le fichier ou récupérer la première ligne, puis la supprimer et que la seconde devienne la première

    Mon but est de faire une sorte de liste d'attente, une liste de taches...avec un Timer je lis à interval de temps régulier la première ligne et m'exécute

    Je suis débutant en VBS et j'accepte tous les tutaux ;=)

    Merci !

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben voir la ...http://vb.developpez.com/faqvbs/

    En gros tu devrai

    1. Renommer le fichier en ".bak" grâce à la propriété name
    2. lire ligne à ligne le fichier .bak
    3. Traiter la 1° ligne lu
    4. Ecrire les autres lignes dans fichier modifier




  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Avec ça, je récupére la première ligne...et l'ensemble du document sur une ligne, alors que je veux conserver les lignes

    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
     
    Dim OFS, oLigne
     
    Set OFS = CreateObject("Scripting.FileSystemObject") 
    Set oLigne = oFS.OpenTextFile("c:\fichier1.txt", 1)
     
    i=0
    reste=""
     
    Do While Not oLigne.AtEndOfStream
     
    sLigne = oLigne.ReadLine
     
    if i=0 Then
    ' Recupère première ligne
    afficher_message(sLigne)
    i=1
    Else
    ' Récupère les autres lignes
    reste = reste & sLigne
    End if
     
    Loop
     
    ' on enregistre....

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et avec cela : Comment écrire dans un fichier texte ?

    tu peu écrire les autres lignes dans un nouveau fichier texte...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Qu'est ce qu'un fichier .bak et pourquoi l'utiliser ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    et avec cela : Comment écrire dans un fichier texte ?

    tu peu écrire les autres lignes dans un nouveau fichier texte...
    Dans ce cas, il faut que préalablement, j'enregistre dans un Array toutes mes lignes, puis après avec une boucle je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Const ForWriting = 2
       Dim fso, f   
     
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.OpenTextFile("c:\temp\ecr.txt", ForWriting,true)
    i=0
    Do While condition pour lire un tableau entierement...
       f.writeLine(Mon_tableau(i))
     
    i++
    Loop
    ou quelque chose comme ça ?

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    pas besoin de stocker les lignes tu peu les écrire directement...:

    Par exemple:
    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
     
    Dim OFS, oLigne
    Dim bLigne1lue 
    Dim sLigne 
    Const ForReading = 1, ForWriting = 2 
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Set oFlu = oFSO.OpenTextFile("fichier1.txt", ForReading) 
    Set oFec = oFSO.OpenTextFile("fichier2.txt", ForWriting,true)
    bLigne1lue = False
     
    Do While Not oFlu.AtEndOfStream
      sLigne = oFlu.ReadLine
      if not bLigne1lue then
        Msgbox "1° ligne : " & sLigne
        bLigne1lue=True 'ça c'est FAIT
      else    
        ' Récupère les autres lignes
        oFec.WriteLine (sLigne)
      end if
    Loop
    oFlu.close
    oFec.close

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Et avec tout çà on peux aussi éviter de changer de fichier :
    garder toujours 1

    Ou alors à la fin, fichier2 devient fichier1
    parce en fait, je réalise ce script avec un Timer, donc si je veux afficher les lignes suivantes, j'ai besoin qu'elleq se trouvent dans le fichier 1, et pas dans le fichier 2...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Pourquoi cela ne fonctionne t il pas ? :

    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
     
     
    Sub script_scTimer_Timer()
     
    tableau = array(100)
     
    Dim OFS
    Dim sLigne 
    Const ForReading = 1
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Set oFlu = oFSO.OpenTextFile("c:/fichier1.txt", ForReading) 
     
    i=0
     
    Do While Not oFlu.AtEndOfStream
     
    	sLigne = oFlu.ReadLine
     
    	tableau(i)=sLigne
    	i=i+1
     
    Loop
     
    oFlu.close
     
    End Sub

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par moijhd
    Pourquoi cela ne fonctionne t il pas ? :
    ? c:\ et pas c:/ peu-être....

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Non, c'est au niveau du tableu que ça me met l'erreur, j'ai l'impression de ne pas pouvoir ajouter tableau(i) pour i=1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error Number: 9   Description: Indice en dehors de la plage

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si je ne me trompe, en écrivant tu crées un tableau n'ayant qu'une valeur (100) dans son index 0.
    Il est donc logique que l'index 1 soit en dehors de la plage.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    C'est ce dont je me rend compte à l'instant : j'allais le marquer lol !
    Je vais essayer donc :

    puisque le nombre d'éléments sera variable

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Tu peux essayer un Ca t'évitera de devoir redimensionner.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Cela me crée un tableau de 100 éléments vides ?

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Voila finalement mon code qui supprime la première ligne d'un fichier texte... :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    tableau = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
     
    ' ou Dim Tableau(100) ??
     
    i=0
     
    Dim OFS, oLigne
    Dim bLigne1lue 
    Dim sLigne 
    Const ForReading = 1, ForWriting = 2 
     
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Set oFlu = oFSO.OpenTextFile("c:/fichier1.txt", ForReading) 
     
    bLigne1lue = False
     
    Do While Not oFlu.AtEndOfStream
     
      sLigne = oFlu.ReadLine
     
    If not sLigne="0" then
     
      if not bLigne1lue then
     
        envoie_message(sLigne)
        bLigne1lue=True
     
      else    
     
        ' Récupère les autres lignes
    	tableau(i)=sLigne
    	i=i+1
     
      end if
    Else
    tableau(0)=""
    End If
     
    Loop
     
    oFlu.close
     
    Set oFec = oFSO.OpenTextFile("c:/fichier1.txt", ForWriting,true)
     
    for a=0 to i
    oFec.WriteLine (tableau(a))
    next
     
     
     
    oFec.close
    Comment l'améliorer ? ^^

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

Discussions similaires

  1. [Encodage] Modifier (lire /écrire) un fichier .doc
    Par Génoce dans le forum Général Java
    Réponses: 6
    Dernier message: 07/07/2011, 10h11
  2. Lire et modifier les propriétés des fichiers Office
    Par SilkyRoad dans le forum Contribuez
    Réponses: 4
    Dernier message: 18/09/2006, 22h25
  3. lire/écrire un fichier stocké dans le JAR ?
    Par SheikYerbouti dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 24/03/2006, 10h37
  4. lire / écrire dans un fichier excel au format xml
    Par crisflo dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 28/01/2006, 10h50
  5. [AS400] Lire et modifier un fichier physique en C/S ?
    Par swirtel dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 26/10/2005, 15h58

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