Bonjour,
j'ai un script sur lequel je sèche ....
Mon besoin : je cherche dans une arborescence un fichier .ini qui se nomme parametre.ini
voici un exemple de son contenu (dans ce fichier la valeur de Version n'est pas bonne et je veux la modifier) :
Dans ce fichier je cherche la section [InformationFramework] et la sous-donnée "Version"
Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 [aaaa] test=0 [InformationFramework] Version=xxxxx [bbbb] valeur=00 V2 - 1.17
Si la valeur pour cette donnée est égale à "V2 - 1.17" alors je ne fais rien. Sinon, je remplace la valeur en place par "V2 - 1.17"
J'arrive à trouver le fichier et mes éléments dans le fichier .ini par contre je n'arrive pas à écrire et remplacer la chaine de caractères
voici mon script, merci pour votre aide !!!
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 Dim strFilePath, strKey, strLeftString, strLine, strSection Dim vif, chemin Set fso = CreateObject("Scripting.FileSystemObject") Set wshell = CreateObject("WScript.Shell") strFolderBase = "C:\Temp\test" 'Dossier de base pour la récursivité ' StrMonFichier = "parametre.ini" 'nom du fichier recherché If NOT fso.FolderExists(strFolderBase) Then WScript.Quit 1 'Vérification que le répertoire existe Set objFolderBase = fso.GetFolder(strFolderBase) WScript.Echo "objFolderBase : " & objFolderBase ' Executer la fonction de rechercche récursive RechercheIni (objFolderBase) ' FONCTIONS 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 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 Sub RechercheIni (objFolder) ' La fonction prend en paramètre un objet Dossier For Each objSubFolder In objFolder.SubFolders 'WScript.Echo "objSubFolder.Path : " & objFolder RechercheIni(objSubFolder) ' Pour chaque sous-dossier, on rappelle la fonction récursive Next For Each objFile In objFolder.Files If objfile.Name = "parametre.ini" then set File = fso.OpenTextFile(objfile.path,1) vif = ReadIni (File,"InformationFramework","Version") 'WScript.Echo vif 'chemin = objfolder If vif = "V2 - 1.16" Then WScript.Echo "version présente" Else WScript.Echo "version non présente" objfile.WriteLine("vif") End If End If Next End Sub
Partager