Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier INI

11 réponses
Avatar
Dagor
Bonsoir,

Pouvez-vous me dire comment mettre à jour une valeur dans un fichier ini par
un script ou un prog qlq. Je preferrerais un vbs

Merci à vous

10 réponses

1 2
Avatar
technicland
Dagor nous a dit :
Pouvez-vous me dire comment mettre à jour une valeur dans un fichier
ini par un script ou un prog qlq. Je preferrerais un vbs


Bonjour /soir
c'est faisable avec un vbs par exemple si tu as un fichier nommé
monfichier.ini stocké sur c:monfichier.ini avec comme structure
[EtatCivil]
Nom=Laurent
site=Technicland
[Lieu]
PaysÊnada
Province=Qc

Si tu souhaite modifier dans la section [Lieu] la rubrique Province en
Québec alors utilise ce vbs origine (Antonin Foller http://www.motobit.com)

-----------------------------Copy ON-------------------------------------
'Section à modifier
WriteINIString "Lieu", "Province", "Québec", "c:monfichier.ini"

'A pas toucher
Sub WriteINIString(Section, KeyName, Value, FileName)
Dim INIContents, PosSection, PosEndSection

'Get contents of the INI file As a string
INIContents = GetFile(FileName)

'Find section
PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare)
If PosSection>0 Then
'Section exists. Find end of section
PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[")
'?Is this last section?
If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1

'Separate section contents
Dim OldsContents, NewsContents, Line
Dim sKeyName, Found
OldsContents = Mid(INIContents, PosSection, PosEndSection - PosSection)
OldsContents = split(OldsContents, vbCrLf)

'Temp variable To find a Key
sKeyName = LCase(KeyName & "=")

'Enumerate section lines
For Each Line In OldsContents
If LCase(Left(Line, Len(sKeyName))) = sKeyName Then
Line = KeyName & "=" & Value
Found = True
End If
NewsContents = NewsContents & Line & vbCrLf
Next

If isempty(Found) Then
'key Not found - add it at the end of section
NewsContents = NewsContents & KeyName & "=" & Value
Else
'remove last vbCrLf - the vbCrLf is at PosEndSection
NewsContents = Left(NewsContents, Len(NewsContents) - 2)
End If

'Combine pre-section, new section And post-section data.
INIContents = Left(INIContents, PosSection-1) & _
NewsContents & Mid(INIContents, PosEndSection)
else'if PosSection>0 Then
'Section Not found. Add section data at the end of file contents.
If Right(INIContents, 2) <> vbCrLf And Len(INIContents)>0 Then
INIContents = INIContents & vbCrLf
End If
INIContents = INIContents & "[" & Section & "]" & vbCrLf & _
KeyName & "=" & Value
end if'if PosSection>0 Then
WriteFile FileName, INIContents
End Sub

Function GetINIString(Section, KeyName, Default, FileName)
Dim INIContents, PosSection, PosEndSection, sContents, Value, Found

'Get contents of the INI file As a string
INIContents = GetFile(FileName)

'Find section
PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare)
If PosSection>0 Then
'Section exists. Find end of section
PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[")
'?Is this last section?
If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1

'Separate section contents
sContents = Mid(INIContents, PosSection, PosEndSection - PosSection)

If InStr(1, sContents, vbCrLf & KeyName & "=", vbTextCompare)>0 Then
Found = True
'Separate value of a key.
Value = SeparateField(sContents, vbCrLf & KeyName & "=", vbCrLf)
End If
End If
If isempty(Found) Then Value = Default
GetINIString = Value
End Function

'Separates one field between sStart And sEnd
Function SeparateField(ByVal sFrom, ByVal sStart, ByVal sEnd)
Dim PosB: PosB = InStr(1, sFrom, sStart, 1)
If PosB > 0 Then
PosB = PosB + Len(sStart)
Dim PosE: PosE = InStr(PosB, sFrom, sEnd, 1)
If PosE = 0 Then PosE = InStr(PosB, sFrom, vbCrLf, 1)
If PosE = 0 Then PosE = Len(sFrom) + 1
SeparateField = Mid(sFrom, PosB, PosE - PosB)
End If
End Function


'File functions
Function GetFile(ByVal FileName)
Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
'Go To windows folder If full path Not specified.
If InStr(FileName, ":") = 0 And Left (FileName,2)<>"" Then
FileName = FS.GetSpecialFolder(0) & "" & FileName
End If
On Error Resume Next

GetFile = FS.OpenTextFile(FileName).ReadAll
End Function

Function WriteFile(ByVal FileName, ByVal Contents)

Dim FS: Set FS = CreateObject("Scripting.FileSystemObject")
'On Error Resume Next

'Go To windows folder If full path Not specified.
If InStr(FileName, ":") = 0 And Left (FileName,2)<>"" Then
FileName = FS.GetSpecialFolder(0) & "" & FileName
End If

Dim OutStream: Set OutStream = FS.OpenTextFile(FileName, 2, True)
OutStream.Write Contents
End Function
---------------------------Copy OFF-----------------------------------------

--
Laurent
www.technicland.net

Avatar
Fred
Bonsoir,
Dans le Windows Ressource Kit Tools de Windows Server 2003, il y a un petit
programme en ligne de comande qui s'appelle IniMan qui permet de faire cela
très simplement.
Extraits de la doc :
The following are the system requirements for this tool:
- Windows 2000, Windows XP Professional, or Windows Server 2003 operating
systems
- .NET Framework
- Permissions: Read and write permissions on the file being modified
Note
Windows Server 2003 installs .NET Framework by default

IniMan uses the following syntax:
iniman [FileName] [/s] [Section] [.Key [=[Value]]]
Parameters
FileName
Specifies the name of the .ini file to modify or create. The file will be
created if it does not exist.
/s
Displays all section names of a specified .ini file.
Section
Specifies the section in a file to parse, modify, or create. Use brackets []
to specify the section.
.Key
Specifies the key to query or set.
Value
Specifies the key value to set.
Sets the value of the key in Section to a specified value.



"Dagor" a écrit dans le message de news:
418ff551$0$5175$
Bonsoir,

Pouvez-vous me dire comment mettre à jour une valeur dans un fichier ini
par

un script ou un prog qlq. Je preferrerais un vbs

Merci à vous





Avatar
technicland
Fred nous a dit :
The following are the system requirements for this tool:
- Windows 2000, Windows XP Professional, or Windows Server 2003 operating
systems
- .NET Framework


Bonjour /soir
si il faut deployer le .net Framework ou s'assurer qu'il est bien installé
sur toutes les becanes avant il aura plus vite fait d'utiliser le script
;-)
Laurent

Avatar
Fred
Bonjour,
Oui, j'avais vu :)
C'était surtout pour info (j'apprends moi-même beaucoup de choses en lisant
les posts !)
En fait je cherchait s'il n'y avait pas un composant fourni avec Windows que
l'on pourrait utiliser dans un script lorsque je suis tombé la-dessus.
Existe-t-il un site ou l'on pourrait trouver de tels composants pour accéder
aux API windows, classées par catégories ?
Je trouve très pratiques les filesystemobject, ADSI, MSXML etc, etc et à mon
avis, vu l'importance du script dans les tâches d'administration, il serait
bon de centraliser tout cela.
J'avoue que j'ai parfois du mal à me retrouver sur le site de Microsoft ;)
Entre le technet et la MSDN ...
Exemple : pour l'instant je suis toujours avec du batch pour utiliser CACLS,
quel dommage dans un joli script ADSI de faire appel à la ligne de commande.
Cela dit peut-être n'ai-je pas bien cherché !




"technicland" a écrit dans le
message de news:
Fred nous a dit :
The following are the system requirements for this tool:
- Windows 2000, Windows XP Professional, or Windows Server 2003
operating


systems
- .NET Framework


Bonjour /soir
si il faut deployer le .net Framework ou s'assurer qu'il est bien installé
sur toutes les becanes avant il aura plus vite fait d'utiliser le script
;-)
Laurent





Avatar
technicland
Fred nous a dit :
Bonjour,
Oui, j'avais vu :)
C'était surtout pour info (j'apprends moi-même beaucoup de choses en
lisant les posts !)
En fait je cherchait s'il n'y avait pas un composant fourni avec
Windows que l'on pourrait utiliser dans un script lorsque je suis
tombé la-dessus. Existe-t-il un site ou l'on pourrait trouver de tels
composants pour accéder aux API windows, classées par catégories ?
Je trouve très pratiques les filesystemobject, ADSI, MSXML etc, etc
et à mon avis, vu l'importance du script dans les tâches
d'administration, il serait bon de centraliser tout cela.
J'avoue que j'ai parfois du mal à me retrouver sur le site de
Microsoft ;) Entre le technet et la MSDN ...
Exemple : pour l'instant je suis toujours avec du batch pour utiliser
CACLS, quel dommage dans un joli script ADSI de faire appel à la
ligne de commande. Cela dit peut-être n'ai-je pas bien cherché !


Bonjour
effectivement l interet des news et aussi d'apprendre ca c'est clair
pour les infos c'est sur que dans la jungle le plus dur c'est de trouver l
info qu il faut
Pour ADSI et les references moi j utilise le platform SDK comme dispo ici
http://msdn.microsoft.com/library/en-us/adsi/adsi/adsi_reference.asp?frame=true
tu peux aussi le downloader l'installer sur ta becane
http://download.microsoft.com/download/winntsrv40/Install/2.5/W9XNT4/FR/adsx86NT.exe
Sinon plus generalement tu as le platform sdk
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ ou tu trouveras
pas mal de truc comme le WMI SDK
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ bref le platform
sdk c'est que du bonheur et en plus tu l installe sur ta becane.
LAurent

Avatar
Fred
Merci pour ces précieux liens.
J'installe et je me forme !

"technicland" a écrit dans le
message de news:
Fred nous a dit :
Bonjour,
Oui, j'avais vu :)
C'était surtout pour info (j'apprends moi-même beaucoup de choses en
lisant les posts !)
En fait je cherchait s'il n'y avait pas un composant fourni avec
Windows que l'on pourrait utiliser dans un script lorsque je suis
tombé la-dessus. Existe-t-il un site ou l'on pourrait trouver de tels
composants pour accéder aux API windows, classées par catégories ?
Je trouve très pratiques les filesystemobject, ADSI, MSXML etc, etc
et à mon avis, vu l'importance du script dans les tâches
d'administration, il serait bon de centraliser tout cela.
J'avoue que j'ai parfois du mal à me retrouver sur le site de
Microsoft ;) Entre le technet et la MSDN ...
Exemple : pour l'instant je suis toujours avec du batch pour utiliser
CACLS, quel dommage dans un joli script ADSI de faire appel à la
ligne de commande. Cela dit peut-être n'ai-je pas bien cherché !


Bonjour
effectivement l interet des news et aussi d'apprendre ca c'est clair
pour les infos c'est sur que dans la jungle le plus dur c'est de trouver l
info qu il faut
Pour ADSI et les references moi j utilise le platform SDK comme dispo ici

http://msdn.microsoft.com/library/en-us/adsi/adsi/adsi_reference.asp?frame=true

tu peux aussi le downloader l'installer sur ta becane

http://download.microsoft.com/download/winntsrv40/Install/2.5/W9XNT4/FR/adsx86NT.exe

Sinon plus generalement tu as le platform sdk
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ ou tu trouveras
pas mal de truc comme le WMI SDK
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ bref le
platform

sdk c'est que du bonheur et en plus tu l installe sur ta becane.
LAurent





Avatar
technicland
Fred nous a dit :
Merci pour ces précieux liens.
J'installe et je me forme !


n'hésite pas nous faire part de tes découvertes ;-)

Avatar
dagor
Bonsoir,

Merci à vous tous pour vos précieuses informations et votre disponiblité.
Je ne manquerai pas de poster mes humbles connaissances.
Jétais du monde Novell de 1987 à 2002 et maintenant je titille 400 postes et
serveurs sur w2k


Merci, Merci

A+

Dagor

"technicland" a écrit dans le
message de news: Oyo#
Fred nous a dit :
Merci pour ces précieux liens.
J'installe et je me forme !


n'hésite pas nous faire part de tes découvertes ;-)





Avatar
dagor
Message Perso !!!

Bonsoir Fred

Je dis Bonsoir car moi, je suis de Toulouse, en France.

Je pense que tu es du Quebec ?

J'ai de la famille à MontReal, car en 1962, nous avons dû quitter notre
Algérie Française où nous étions comme vous, beaucoup d'entre nous se sont
expatriés vers le Canada et beaucoup ne l'ont pas regrétté.

c'est avec grand plaisir que nous y venons avec mon épouse.

encore merci pour ton aide précieuse.

ps: mon cousin tient un restaurant à Bourgeuil



a bientôt et merci à vous tous.



"dagor" a écrit dans le message de news:
41925ce7$0$18112$
Bonsoir,

Merci à vous tous pour vos précieuses informations et votre disponiblité.
Je ne manquerai pas de poster mes humbles connaissances.
Jétais du monde Novell de 1987 à 2002 et maintenant je titille 400 postes
et

serveurs sur w2k


Merci, Merci

A+

Dagor

"technicland" a écrit dans le
message de news: Oyo#
Fred nous a dit :
Merci pour ces précieux liens.
J'installe et je me forme !


n'hésite pas nous faire part de tes découvertes ;-)









Avatar
dagor
Désolé, mais c'est à Laurent que j'adresse d'abord ce message !


"dagor" a écrit dans le message de news:
4193def7$0$8617$
Message Perso !!!

Bonsoir Fred

Je dis Bonsoir car moi, je suis de Toulouse, en France.

Je pense que tu es du Quebec ?

J'ai de la famille à MontReal, car en 1962, nous avons dû quitter notre
Algérie Française où nous étions comme vous, beaucoup d'entre nous se sont
expatriés vers le Canada et beaucoup ne l'ont pas regrétté.

c'est avec grand plaisir que nous y venons avec mon épouse.

encore merci pour ton aide précieuse.

ps: mon cousin tient un restaurant à Bourgeuil



a bientôt et merci à vous tous.



"dagor" a écrit dans le message de news:
41925ce7$0$18112$
Bonsoir,

Merci à vous tous pour vos précieuses informations et votre
disponiblité.


Je ne manquerai pas de poster mes humbles connaissances.
Jétais du monde Novell de 1987 à 2002 et maintenant je titille 400
postes


et
serveurs sur w2k


Merci, Merci

A+

Dagor

"technicland" a écrit dans le
message de news: Oyo#
Fred nous a dit :
Merci pour ces précieux liens.
J'installe et je me forme !


n'hésite pas nous faire part de tes découvertes ;-)













1 2