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