Bonjour, je me casse les dents sur un besoin qui parait pourtant simple ....
En VBS, je cherche à parcourir toute une arborescence depuis un répertoire défini (recherche récursive) pour trouver les fichiers qui se nomment "parametrage.ini".
Une fois ces fichiers trouvés, je les édite et cherche dans la section "InformationFramework" une clé bien précise qui se nomme "Version". C'est la valeur de cette clé que je cherche à afficher/récupérer, et ce sur tous les fichiers .ini précédemment trouvés.
J'arrive à faire la recherche récursive dans un vbs :

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
On error resume next
 
Dim strFilePath, strKey, strLeftString, strLine, strSection
Set fso = CreateObject("Scripting.FileSystemObject")
Set wshell = CreateObject("WScript.Shell")
Const ForReading   = 1
Const ForWriting   = 2
Const ForAppending = 8
strFolderBase = "C:\Temp\Test" 'Dossier de base pour la récursivité, exemple C:
StrMonFichier = "parametre.ini" 'on renseigne le nom du fichier qu'on recherche
If NOT fso.FolderExists(strFolderBase) Then WScript.Quit 1 'Juste pour vérification que le répertoire existe
 
Set objFolderBase = fso.GetFolder(strFolderBase)
RechercheIni (objFolderBase)
 
 
Sub RechercheIni (objFolder) ' La fonction prend en paramètre un objet Dossier
	For Each objSubFolder In objFolder.SubFolders
		RechercheIni(objSubFolder) ' Pour chaque sous-dossier, on rappelle la fonction récursive
	Next
	For Each objFile In objFolder.Files
		If objfile.Name = StrMonFichier then
			Wscript.Echo objfile.name & " + " & objfile.path		
		 End If
	Next 
End Sub
et j'arrive à lire et récupérer la valeur liée à la clé "Version"dans UN fichier ini :
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
Set fso = CreateObject("Scripting.FileSystemObject")
Set wshell = CreateObject("WScript.Shell")
 
Set tfg = fso.OpenTextFile("C:\Temp\Test\Rep2" & "\parametre.ini",1)
Msgbox ReadIni(tfg,"InformationFramework","Version")
 
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
' 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

Mais je n'arrive pas à combiner ces 2 scripts .....
Si vous avez une idée .....
Merci