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
| Option Explicit
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Dim strFilePath, strKey, strLeftString, strLine, strSection
Dim fso,strFolderBase,objFolderBase,objFile,IniFile,objSubFolder
Set fso = CreateObject("Scripting.FileSystemObject")
strFolderBase = "C:\Temp\Test" 'Dossier de base pour la récursivité, exemple C:
If NOT fso.FolderExists(strFolderBase) Then WScript.Quit 1 'Juste pour vérification que le répertoire existe
'---------------------Main Program------------------------------------------------------------------
Set objFolderBase = fso.GetFolder(strFolderBase)
Call RechercheIni(objFolderBase)
'---------------------------------------------------------------------------------------------------
Sub RechercheIni(objFolder) ' La fonction prend en paramètre un objet Dossier
For Each objFile In objFolder.Files
If LCase(fso.GetExtensionName(objFile.Name)) = "ini" then
Wscript.Echo objfile.name & " + " & objfile.path
Set IniFile = fso.OpenTextFile(objfile.path,ForReading)
If objFile.Size > 0 Then ' Vérifier si le fichier n'est pas vide
Wscript.Echo ReadIni(IniFile,"InformationFramework","Version")
End If
End If
Next
For Each objSubFolder In objFolder.SubFolders
RechercheIni(objSubFolder) ' Pour chaque sous-dossier, on rappelle la fonction récursive
Next
End Sub
'---------------------------------------------------------------------------------------------------
Function ReadIni(iniFile,section,key)
' renvoie la valeur de la clé <key> de la section <section> de l'objet fichier <iniFile> ouvert en lecture
Dim iniText,reg,regSub
' Initialisation des objets regexp
' peut être déplacé dans le code principal en cas d'appels successifs
Set reg = New RegExp
Set regSub = New RegExp
reg.IgnoreCase = True
regSub.IgnoreCase = True
' lecture du fichier ini et fermeture
iniText = iniFile.ReadAll
iniFile.Close
' lecture de la clé spécifique de la section
reg.Pattern = "\[" & section & "\]([^\[]+)":regSub.Pattern = "\b" & key & " *= *([^;\f\n\r\t\v]+)"
On Error Resume Next
ReadIni = regSub.Execute(reg.Execute(iniText).Item(0).SubMatches(0)).Item(0).SubMatches(0)
If Err.Number = 5 then ReadIni = False
End Function
'--------------------------------------------------------------------------------------------------- |
Partager