oliverbecht
Goto Top

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

Content-Key: 79129

Url: https://administrator.de/contentid/79129

Printed on: April 23, 2024 at 15:04 o'clock

Member: bastla
bastla Jan 25, 2008 at 10:53:50 (UTC)
Goto Top
Hallo OliverBecht!

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
Member: OliverBecht
OliverBecht Jan 25, 2008 at 11:48:13 (UTC)
Goto Top
Schon mal vielen Dank für deine Antwort.
Ich muss nur den Wert hinter LastUser= auf den angemeldeten Benutzernamen bringen und nicht austauschen
Währe echt nett wenn Du mir hier nochmals helfen könntest.
Member: bastla
bastla Jan 25, 2008 at 11:59:32 (UTC)
Goto Top
Hallo OliverBecht!

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ächst
LastUser=Test
stand, nachher
LastUser=Benutzername (des angemeldeten Benutzers)
zu finden ist (womit eigentlich für mich Dein Ziel erreicht scheint) ...

Was hat denn Dein Test ergeben?

Grüße
bastla
Member: rubberduck
rubberduck Jan 25, 2008 at 12:23:53 (UTC)
Goto Top
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 face-wink

Hört sich vielleicht etwas kompliziert an, aber wenn Du variable Werte hast ist es 1a.
Member: OliverBecht
OliverBecht Jan 25, 2008 at 12:34:54 (UTC)
Goto Top
Nein der Wert hinter LastUser= ist immer variabel und nicht gleich.
Schon mal danke
Member: stbewo
stbewo Jan 25, 2008 at 12:41:56 (UTC)
Goto Top
Oder Du
trennst Dein INI File in Part1.ini

Part1.ini ---------------
Login Settings
[Login Settings]
ShowLogin=true
und
Part2.ini ---------------
LastDatabase=TestDB

und mit

type part1.ini > login.ini
echo LastUser=%username% >> login.ini
type part2.ini >> login.ini

hast Du ein geändertes INI File.

Gruß
Stefan
Member: rubberduck
rubberduck Jan 25, 2008 at 13:32:12 (UTC)
Goto Top
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
Member: OliverBecht
OliverBecht Jan 25, 2008 at 13:41:32 (UTC)
Goto Top
Tausend Dank jetzt hat es geklappt.....