Jump to content

per script in einer ini-datei text schreiben/ändern


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

bin in Script Programmierung ein Neuling deshalb die Frage:

 

Wie kann man in einer ini-Datei eine Zeile ändern, oder einen Text anhängen?

Pfad: C:\Programme\OCS Inventory Agent\service.ini

 

Die Datei sieht wie folgt aus:

[OCS_SERVICE]

NoProxy=1

Server=test.net

Pnum=80

Miscellaneous= /S /server:test.net /pnum:80

PROLOG_FREQ=4

OLD_PROLOG_FREQ=4

TTO_WAIT=2940

 

 

Ich bräuchte nun in der Zeile Miscellaneous einen Text hinzugefügt -> "/NP"

 

Die neue Zeile sollte dann so aussehen:

Miscellaneous= /S /server:test.net /pnum:80 /NP

 

Weiters sollte man dieses Script per Gruppenrichtlinie einer Domäne verteilen können. Die Datei und der Programmpfad lautet auf allen Clients gleich.

 

Kann mir jemand bitte weiterhelfen, Danke schön im voraus :)

Link zu diesem Kommentar

Per VBScript könnte man in Deinem Fall einfach den String suchen und ersetzen lassen:

Set MyFiles = CreateObject("Scripting.FileSystemObject")

varDatei="C:\Programme\OCS Inventory Agent\service.ini"
Set f = MyFiles.OpenTextFile(varDatei, 1)
Text = f.ReadAll

varSearch="Miscellaneous= /S /server:test.net /pnum:80"
varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB"

Set f = MyFiles.OpenTextFile(varDatei, 2, True)
f.Write Replace(Text, varSearch, varReplace,1,-1,1)

 

Sollten die Parameter hinter "Miscellaneous=" unterschiedlich sein, die Position jedoch egal, ginge für die 2 Variablen ggf. auch

varSearch="Miscellaneous="
varReplace="Miscellaneous= /NB"

Link zu diesem Kommentar

@Cybquest:

 

Danke das Script funktioniert wunderbar. Jetzt hätte ich noch eine Frage, wenn ich nun dieses Script per GPO beim starten eines Clients verteile.

 

Wie kann man nun eine Abfrage vor das Script setzen, ob dieses schon mal durchgeführt wurde, und wenn "ja" - > dann abgebrochen wird.

 

Sonst wird immer die die gewünschte zeile abgefragt, und durch die neue ersetzt.

 

Danke für die Hilfe

Link zu diesem Kommentar

Z.B. im Script selbst einfach prüfen lassen, ob der String schon korrekt gesetzt ist (bzw. ob er noch nicht gesetzt ist):

Set MyFiles = CreateObject("Scripting.FileSystemObject")

varDatei="C:\Programme\OCS Inventory Agent\service.ini"
Set f = MyFiles.OpenTextFile(varDatei, 1)
Text = f.ReadAll

varSearch="Miscellaneous= /S /server:test.net /pnum:80"
varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB"

If Instr(Text,varReplace)=0 then
 Set f = MyFiles.OpenTextFile(varDatei, 2, True)
 f.Write Replace(Text, varSearch, varReplace,1,-1,1)
End If

Link zu diesem Kommentar

@Frr. Sorry das ich nicht gleich geantwortet habe, aber es sind nicht alle Clienst WinXp. Es gibt nioch ein paar Raritäten die unter Win200 laufen.

 

Aber trotzdem danke für die Antwort und dein angebotene Holfe. :)

@Cybquest:

 

Ich hätte da noch eine Frage zu vbs Scripts ->

Kann man eine Setup.exe via vbs Script starten, und auch überprüfen ob dieses Programm bereits installiert ist?

 

Das Programm besitzt den Namen SingleLogon und wird unter dem Standardpfad C:\Programme\SingleLogon\... installiert.

 

Dies würde wieder via GPO auf Win2000 und WinXp Maschinen durchgeführt werden müssen. Dazu hätte ich dieses vbs Script und die Setup.exe in die GPO abgelegt und beim starten der Clients wird dieses aktiviert.

Link zu diesem Kommentar
  • 1 Monat später...

Hallo Cybquest,

 

ich habe das Script bei dem du mir geholfen hast bereits per GPO verteilt, hat wunderbar funktioniert. Danke nochmals.

 

Jetzt hätte ich dazu eine neue Frage, hab schon in einigen Foren nachgestöbert aber so richtig bin ich nich zu einem Ende gekommen.

 

Wie kann man das Script so umbauen das man einen Text ersetz (dies funktioniert bereits) und 2 weitere Zeilen in die Datei schreiben (gleich angefügt und ohne Zeilen in der Datei zu löschen)?

 

 

Funktioniert das eventuell mit ??


Const SuchText = "bestimmter Text" 
Const NeuText= "einzufügender Text" 

For i = 0 To UBound(Lines) 
If Instr(LCase(Lines(i)), LCase(SuchText)) Then NewFile.WriteLine Neutext	NewFile.WriteLine Lines(i) 

 

Ich wollte dies beim derzeitigen Script anfügen:

Derzeitiger Code:

 

Set MyFiles = CreateObject("Scripting.FileSystemObject")

varDatei="C:\Programme\OCS Inventory Agent\service.ini"
Set f = MyFiles.OpenTextFile(varDatei, 1)
Text = f.ReadAll

varSearch="Miscellaneous= /S /server:test.net /pnum:80"
varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB"

If Instr(Text,varReplace)=0 then
 Set f = MyFiles.OpenTextFile(varDatei, 2, True)
 f.Write Replace(Text, varSearch, varReplace,1,-1,1)
End If

Link zu diesem Kommentar

Ich wollte dies beim derzeitigen Script anfügen:

Ja nu... dann mach's doch :D

 

Set MyFiles = CreateObject("Scripting.FileSystemObject")

varDatei="C:\Programme\OCS Inventory Agent\service.ini"
Set f = MyFiles.OpenTextFile(varDatei, 1)
Text = f.ReadAll

varSearch="Miscellaneous= /S /server:test.net /pnum:80"
varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB"

If Instr(Text,varReplace)=0 then
 Set f = MyFiles.OpenTextFile(varDatei, 2, True)
 f.Write Replace(Text, varSearch, varReplace,1,-1,1)
 f.WriteLine "Ne Zeile am Ende"
 f.WriteLine "Noch ne Zeile am Ende"
End If

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!
Gast
Dieses Thema wurde für weitere Antworten geschlossen.
×
×
  • Neu erstellen...