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 :

Extraction fichier texte


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut Extraction fichier texte
    Bonjour à toute la communauté.

    Avant d'exposer mon problème je tenais à remercier tout les développeurs qui post sur ce forum car cela m'a été d'une grande aide dans la réalisation de mes scripts vbs jusqu'à aujourd'hui.

    J'ai entrepris un script qui permet de récupérer un bloc de ligne d'un fichier texte pour le mettre dans un nouveau fichier: SplitFile.txt
    Mon script fonctionnait merveilleusement bien jusqu'a ce que je l'agrémente de la fonctionnalité WScript.Arguments afin de placé le fichier à découpé via un drag & drop.

    Le script s'exécute bien et sans erreurs. Cependant mon fichier SplitFile.txt n'est pas créer.
    Je tiens à préciser que pour test, j'ai afficher le contenu de la variable qui est censé être copié dans mon fichier de sortie et son contenu est bien ce que j'attends.
    Je suis donc sec de chez sec et vous demande votre aide.

    Merci.
    Cordialement
    Starbuck

    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
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f, a, b, s,tb
    'val = "enable=false"
    'val1 = "toto"
    'File = "TRACE_IP.TXT"
    'replace = "replace.vbs "
    'On récupère les arguments
    Set sArg = WScript.Arguments
     
    'Il n'y a qu'un argument, c'est le fichier en entrée.
    'S'il y en a d'autres, on affiche un message d'erreur et on sort du script.
    If sArg.Count <> 1 Then
    	MsgBox "Veuillez passer en paramètre le fichier à découper."
    	WScript.Quit
    End If
     
    'On récupère le premier (et unique) argument.
    File = sArg(0)
     
    'On Ouvre le fichier en lecture
    set fso=CreateObject("Scripting.FileSystemObject")
    set oFich=fso.OpenTextFile(File,1,True)
    tx=oFich.ReadAll
    ' On ferme le fichier après en avoir lu le contenu
    oFich.Close
     
    'On découpe chaque ligne en les insérant dans un tableau    
    tb=Split(tx,VbNewline)
     
    'On récupere les lignes qu'on souhaite récupérer
    a = InputBox("Première ligne à copier","Question?")
    a = a -1     'on retire 1 à a puisque le premier index du tableau (tb) est 0(zéro)
    b = InputBox("Dernière ligne à copier","Question?")
    b = b -1     'on retire 1 à b puisque le premier index du tableau (tb) est 0(zéro)
    For i = a To b
    s = s + tb(i)+ Vbnewline
    Next
    msgbox s
    'Ecriture dans le fichier SplitFile.txt
    set fso=CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("splitFile.txt",2, True)
    f.write(s)
     
    ' Nettoyage
    Set oFich = Nothing
    Set fso = Nothing
    Set f = Nothing
    Set s = Nothing
    msgbox "terminé", vbokonly,"SplitFile"

  2. #2
    Expert éminent


    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
    Par défaut
    bonsoir,

    tu ne précise pas l'endroit ou tu veux créer ton fichier ...... n'est-il pas créé ailleurs que prévu...

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut
    Bonjour,
    Je ne précise pas le chemin de création car je souhaite qu'il soit créé dans le répertoire du script.
    D'ailleurs si je commente tout ce qui est attrait au argument et que je code le nom du fichier à lire dans la variable File, cela fonctionne.
    Un grand mystère...

  4. #4
    Expert éminent


    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
    Par défaut
    Citation Envoyé par starbuck69400 Voir le message
    ...
    Un grand mystère...
    Il n'y as aucun mystère ... si tu ne précise pas le répertoire le fichier est créé sur le répertoire courant ....

    soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     msgbox fso.GetFolder(".").Path

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Par défaut
    Ok merci de ta réponse ça me permet d'y voir plus clair.

    Cependant, je ne comprends pas cette différence de comportement avec le code ci dessous qui lui fonctionne sans que j'ai à spécifier le repertoire ou créer mon fichier...

    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
     
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f, a, b, s, t, u, v, w,x, Fs, Fd,oFso, tb
    Dim File
    File = "TRACE_IP.TXT"
     
    set fso=CreateObject("Scripting.FileSystemObject")
    set oFich=fso.OpenTextFile(File,1,True)
    tx=oFich.ReadAll
    msgbox tx
    oFich.Close    ' On ferme le fichier après en avoir lu le contenu
    tb=Split(tx,VbNewline)
    a = InputBox("Première ligne à copier","Question?")
    a = a -1     'on retire 1 à a puisque le premier index du tableau (tb) est 0(zéro)
    b = InputBox("Dernière ligne à copier","Question?")
    b = b -1     'on retire 1 à b puisque le premier index du tableau (tb) est 0(zéro)
    For i = a To b
    s = s + tb(i)+ Vbnewline
    Next
    'Ecriture dans le fichier de sortie
    set fso=CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("splitFile.txt",2, True)
    f.write(s)
    ' Nettoyage
    Set oFich = Nothing
    Set fso = Nothing
    Set f = Nothing
    Set s = Nothing
    msgbox "terminé", vbokonly,"CuteFile"

    J'ai adapté mon code pour le fichier soit créer dans le même répertoire que le fichier source.

    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
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f, a, b, s,tb
    FileOut = "SplitFile.txt"
    'On récupère les arguments
    Set sArg = WScript.Arguments
     
    'Il n'y a qu'un argument, c'est le fichier en entrée.
    'S'il y en a d'autres, on affiche un message d'erreur et on sort du script.
    If sArg.Count <> 1 Then
    	MsgBox "Veuillez passer en paramètre le fichier à découper."
    	WScript.Quit
    End If
     
    'On récupère le premier (et unique) argument.
    File = sArg(0)
     
    'On Ouvre le fichier en lecture
    set fso=CreateObject("Scripting.FileSystemObject")
    set oFich=fso.OpenTextFile(File,1,True)
    tx=oFich.ReadAll
    ' On ferme le fichier après en avoir lu le contenu
    oFich.Close
     
    'On découpe chaque ligne en les insérant dans un tableau    
    tb=Split(tx,VbNewline)
     
    'On récupere les lignes qu'on souhaite récupérer
    a = InputBox("Première ligne à copier","Question?")
    a = a -1     'on retire 1 à a puisque le premier index du tableau (tb) est 0(zéro)
    b = InputBox("Dernière ligne à copier","Question?")
    b = b -1     'on retire 1 à b puisque le premier index du tableau (tb) est 0(zéro)
    For i = a To b
    s = s + tb(i)+ Vbnewline
    Next
    'Ecriture dans le fichier SplitFile.txt
    set fso=CreateObject("Scripting.FileSystemObject")
    'Set f = fso.OpenTextFile("splitFile.txt",2, True)
    l = fso.GetParentFolderName(File)&"\"&FileOut
    Set f = fso.OpenTextFile(l,2, True)
    f.write(s)
     
    ' Nettoyage
    Set oFich = Nothing
    Set fso = Nothing
    Set f = Nothing
    Set s = Nothing
    msgbox "terminé", vbokonly,"CuteFile"
    Cela fonctionne partiellement.
    J'entends par là que pour un fichier txt, un fichier html ou bien encore un fichier ini cela fonctionne parfaitement. En revanche pour un fichier php (ci-joint) cela ne fonctionne pas comme espéré:
    Si je souhaite copié une ligne, il me copie l'intégralité du fichier source dans le fichier de destination. Si je lui demande de copier plus d'une ligne il me met une erreur: Indice en dehors de la plage: 'i'.
    Un mystere pour moi puisque cela fonctionne très bien avec d'autre fichier.
    Y aurait il un lien avec le contenu du fichier source à lire?

    Encore merci BBIL pour tes précieuses informations.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent


    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
    Par défaut
    Une question par discussion ...


    ben la différence c'est la façon dont tu "lance" ton script .. et donc le répertoire courant au moment du lancement...



    pour ton fichier php le séparateur de ligne n'est pas un vbNewLine ( CR, LF) mais vbLF ( LF seulement)...

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

Discussions similaires

  1. [WD11] Extraction fichier texte
    Par devalender dans le forum WinDev
    Réponses: 3
    Dernier message: 07/07/2009, 15h05
  2. Extraction ligne d'un fichier text
    Par bhahmed dans le forum C++Builder
    Réponses: 17
    Dernier message: 06/09/2006, 11h07
  3. Extraction de texte dans un fichier
    Par chris91 dans le forum Langage
    Réponses: 4
    Dernier message: 18/08/2006, 16h09
  4. Extraction de données dans un fichier texte en VB6 !
    Par rockroa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/06/2006, 16h00
  5. Perl: Extraction de données d'un fichier texte ?
    Par fifto dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2006, 16h01

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