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 :
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 :
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 :
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 :
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
Partager