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 :

Récupérer le contenu de différents fichiers


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 50
    Par défaut Récupérer le contenu de différents fichiers
    Bonjour,

    J'ai actuellement un script qui me permet de parcourir les différent fichiers d'une arborescence et qui pour chaque fichier récupère :
    - Son nom
    - Son adresse dans l'arborescence
    - Son type

    Voila la partie principale du script :
    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
    54
    55
    56
    57
    58
    59
    f.writeline("<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>")
    f.writeline("<add>")
    scanFolder(stRep)
    f.writeline("</add>")
     
    MsgBox "Terminé ! " & vbCrLf & indexedFiles & " fichiers "
     
    ' METHODES
    ' ####################################
    ' Scanne un répertoire
    private sub scanFolder(dir)
      ' liste les documents du répertoire
      If oFSO.FolderExists(dir) Then
     
        For each oFl in  oFSO.GetFolder(dir).Files
     
          If hasIndexableType(oFl) Then
            addDocSolR(oFl)
          End If
        Next
          ' parcours en profondeur des sous-répertoires
        For each oFld in  oFSO.GetFolder(dir).SubFolders
          scanFolder(oFld.Path)
        Next
     
      End If
     
    end sub
     
    ' Sérialise un fichier sous forme de XML
    private sub addDocSolR(file)
      indexedFiles=indexedFiles+1
     
      f.writeline(" <doc>")
      f.writeline(" <field name=""id"">" & indexedFiles & "</field>")
      f.writeline("   <field name=""name"">" & file.Name & "</field>")
      f.writeline("	  <field name=""path"">" & file.Path & "</field>")
      f.writeline("   <field name=""type"">" & file.Type & "</field>")
     
      'Ajouter les attributs des fichiers à indexer ici
     
      f.writeline(" </doc>")
     
    end sub
     
    private function hasIndexableType(file)
      res = false
      If Instr(1,file.Name, ".") <> 0 Then
        tab = Split(file.Name,".")
        extension = tab(UBound(tab))
     
        if extension = "doc" Then
          res = true
        End If
        'suite avec les autres extensions autorisées
     
       End If
       hasIndexableType=res
    end function
    Le script me crée donc un fichier xml avec une liste de tous les fichiers trouvés au format word, excel, txt, pdf.

    Exemple pour 1 fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <add>
     <doc>
     <field name="id">1</field>
       <field name="name">Nom du fichier 1</field>
       <field name="path">Adresse du fichier 1</field>
       <field name="type">Présentation Microsoft Office PowerPoint 97-2003</field>
     </doc>
    </add>

    Je voudrais récupérer le contenu de chaque fichier afin que celui-ci soit présent dans mon xml qui est généré automatiquement.
    Le but est d'obtenir un champ supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <add>
     <doc>
     <field name="id">1</field>
       <field name="name">Nom du fichier 1</field>
       <field name="path">Adresse du fichier 1</field>
       <field name="type">Présentation Microsoft Office PowerPoint 97-2003</field>
       <field name="content">Contenu du fichier 1</field>
     </doc>
    </add>
    Au fil de mes recherches j'ai vu qu'il existait ce type de code pour lire des fichiers txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ' Lit le contenu d'un fichier dans une variable
     Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set fso = CreateObject("Scripting.FileSystemObject" )
    Set f = fso.OpenTextFile("c:\un_repertoire\toto.txt", ForReading)
    une_variable = f.ReadAll
    f.Close
     
    ' Verification
    wscript.echo une_variable
    Existe-t-il une solution similaire pour des fichiers du type xls, xlsx, doc, docx, pdf... ?
    Ou alors est-il possible d'effectuer une conversion de ces fichiers en format txt ?

    J'espère avoir été claire
    Merci d'avance !
    Linaet

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par Linaet Voir le message
    Existe-t-il une solution similaire pour des fichiers du type xls, xlsx, doc, docx, pdf... ?

    Je ne sais pas si avec la méthode OpenAsTextStream va peut-être résoudre ton problème ou non mais tu peut comme même l'essayer

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 50
    Par défaut
    Je teste ça et je te tiens au courant ! Merci

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 50
    Par défaut
    Malheureusement ça ne fonctionne pas

    J'ai depuis avancé (heureusement) :
    J'arrive désormais à récupérer le contenu d'un document word (avec les caractères non imprimables). J'essaie donc de créer un script qui replacerai ces caractères non imprimables apparus dans mon fichier xml lors de l'extraction par un espace.

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par Linaet Voir le message
    Malheureusement ça ne fonctionne pas
    J'ai depuis avancé (heureusement) :
    J'arrive désormais à récupérer le contenu d'un document word (avec les caractères non imprimables). J'essaie donc de créer un script qui replacerai ces caractères non imprimables apparus dans mon fichier xml lors de l'extraction par un espace.

    pouvez-vous nous faire un petit copier/coller de votre code pour voir mieux les choses et votre avancement pour ce dernier

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 50
    Par défaut
    Voila ce qui me permet de récuperer le contenu d'un fichier Word :
    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
     
    Dim stOut 'Nom du fichier à générer
    stOut = "d:\test.xml"
     
    Const ForReading = 1, ForWriting = 2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(stOut, ForWriting,true)
     
    Dim oFSO,oFld
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    Dim indexedFiles
    indexedFiles=0
     
     
    '**** Lecture du fichier Word ****
    Set fso = CreateObject("Scripting.FileSystemObject")
    DocWord = "d:\test.doc"
    Set objWord = CreateObject ("Word.Application")
    objWord.Visible = False
    versionsobjWord.DisplayAlerts = False
    objWord.Documents.Open(DocWord),1
    Set objDoc = objWord.ActiveDocument
    Set objRange = objDoc.Content
    CorpsMessage = ObjRange.Text
     
    f.writeline(CorpsMessage)
    objWord.Quit
    Set objWord = Nothing
    Je récupére tout le texte (sauf Pied de page et Entête) avec ce genre de caractères non imprimables que je souhaite supprimer :
    b – 

Discussions similaires

  1. [File] récupérer le contenu d'un fichier
    Par kendras dans le forum C
    Réponses: 31
    Dernier message: 19/06/2006, 12h33
  2. Réponses: 5
    Dernier message: 10/04/2006, 12h07
  3. Aide : Décoder, récupérer le contenu d'un fichier .pst
    Par ATTIA dans le forum API, COM et SDKs
    Réponses: 10
    Dernier message: 23/03/2006, 16h11
  4. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45
  5. [ethereal] récupérer le contenu d'un fichier envoyé ?
    Par in dans le forum Développement
    Réponses: 1
    Dernier message: 19/06/2005, 15h44

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