Zeile aus Ini Datei löschen
Hallo ich habe eine Ini Datei aus der sollte einfach eine bestimmte Zeile bzw. Wörter gelöscht werden und nachher wieder die neue Zeile bzw. die Zeichenfolge eingefügt werden.
Geändert werden muss der Eintrag LastUser=Test
Hier ist meine INI
------------------------------------------------------------------
Login Settings
// ------------------------------------------------------------------
[Login Settings]
ShowLogin=true
LastUser=Test
LastDatabase=TestDB
Ich habe auch schon ein VB Skript mit dem ich den Eintrag schreibe, jedoch kommt hier der Eintrag immer am Schluß
'Einträge für CEG in ini schreiben
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso
Dim g
Dim f
Dim benutzername
Dim fs, net, objectDomain, wshshell, objectUser
'Zugriff auf Objecte
Set fs = CreateObject("Scripting.FileSystemObject")
Set net = CreateObject("WScript.Network")
Set wshshell = CreateObject("Wscript.Shell")
'Username ermitteln
benutzername = net.username
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\test.ini", ForAppending, True)
f.writeline "[Login Settings]"
f.writeline "LastUser=" & Benutzername
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\test.ini", 1, True)
Tausend Dank für eure Hilfe
Geändert werden muss der Eintrag LastUser=Test
Hier ist meine INI
------------------------------------------------------------------
Login Settings
// ------------------------------------------------------------------
[Login Settings]
ShowLogin=true
LastUser=Test
LastDatabase=TestDB
Ich habe auch schon ein VB Skript mit dem ich den Eintrag schreibe, jedoch kommt hier der Eintrag immer am Schluß
'Einträge für CEG in ini schreiben
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso
Dim g
Dim f
Dim benutzername
Dim fs, net, objectDomain, wshshell, objectUser
'Zugriff auf Objecte
Set fs = CreateObject("Scripting.FileSystemObject")
Set net = CreateObject("WScript.Network")
Set wshshell = CreateObject("Wscript.Shell")
'Username ermitteln
benutzername = net.username
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\test.ini", ForAppending, True)
f.writeline "[Login Settings]"
f.writeline "LastUser=" & Benutzername
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\test.ini", 1, True)
Tausend Dank für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79129
Url: https://administrator.de/contentid/79129
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo OliverBecht!
Wenn es nur darum geht, immer "LastUser=Test" durch "LastUser=Benutzername" zu ersetzen, dann etwa so:
Grüße
bastla
Wenn es nur darum geht, immer "LastUser=Test" durch "LastUser=Benutzername" zu ersetzen, dann etwa so:
Const IniFile = "C:\test.ini"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set fso = CreateObject("Scripting.FileSystemObject")
Set net = CreateObject("WScript.Network")
Set f = fso.OpenTextFile(IniFile, ForReading)
Inhalt = f.ReadAll
Set f = fso.OpenTextFile(IniFile, ForWriting, True)
f.Write Replace(Inhalt, "LastUser=Test", "LastUser=" & net.username)
f.Close
Grüße
bastla
Hallo OliverBecht!
stand, nachher
zu finden ist (womit eigentlich für mich Dein Ziel erreicht scheint) ...
Was hat denn Dein Test ergeben?
Grüße
bastla
Ich muss nur den Wert hinter LastUser= auf den angemeldeten Benutzernamen bringen und nicht austauschen
Eigentlich wäre das Ziel meines "Austausch"-Vorschlages, dass dort (und zwar an der selben Position innerhalb der Datei wie vorher), wo zunächstLastUser=Test
LastUser=Benutzername (des angemeldeten Benutzers)
Was hat denn Dein Test ergeben?
Grüße
bastla
Ist der Wert hinter LastUser= variabel, oder ist er immer gleich?
Wenn immer gleich, kann ich mich nur Bastla anschliessen.
Die Goldlösung wäre folgende:
Du schreibst den Inhalt der Datei in ein Array suchst Deinen Wert, ersetzt es und schreibst es am Schluss zurück
Hört sich vielleicht etwas kompliziert an, aber wenn Du variable Werte hast ist es 1a.
Wenn immer gleich, kann ich mich nur Bastla anschliessen.
Die Goldlösung wäre folgende:
Du schreibst den Inhalt der Datei in ein Array suchst Deinen Wert, ersetzt es und schreibst es am Schluss zurück
Hört sich vielleicht etwas kompliziert an, aber wenn Du variable Werte hast ist es 1a.
Versuchs mal so:
...
..
.
Set f = fso.OpenTextFile("C:\test.ini", 1, True)
arrFile = Split(f.ReadAll, vbCrLf)
f.Close
For i = 0 To UBound(arrFile)
If InStr(arrFile(i), "LastUser") <> 0 Then arrFile(i) = "LastUser=" & net.UserName
Next
Set f = fso.OpenTextFile("C:\test.ini", 2, True)
f.Write (Join(arrFile, vbCrLf))
f.Close