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) :
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
Dans ce fichier je cherche la section [InformationFramework] et la sous-donnée "Version"
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