Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
MAJEG

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

Empfohlene Beiträge

Danke für die Info, das schreiben in die Datei funktioniert, jedoch wurden die Zeilen am Ende angefügt wie du auch dazugeschrieben hast, ohne Zeilenschaltung:

[OCS_SERVICE]
NoProxy=1
Server=test.net
Pnum=80
Miscellaneous= /S /server:test.net /pnum:80 /NB
PROLOG_FREQ=4
OLD_PROLOG_FREQ=4
TTO_WAIT=2940[b]Ne Zeile am Ende[/b]
[b]Noch ne Zeile am Ende[/b]

 

 

 

Ich wollte die 2 Zeilen aber nach "Miscellaneous= " einfüg

en.

 

Damit es so aussieht:

[OCS_SERVICE]
NoProxy=1
Server=test.net
Pnum=80
Miscellaneous= /S /server:test.net /pnum:80 /NB
[b]Ne Zeile am Ende[/b]
[b]Noch ne Zeile am Ende[/b]
PROLOG_FREQ=4
OLD_PROLOG_FREQ=4
TTO_WAIT=2940

 

Ich habe es nur mit einer Zeile geschafft und diese auf eine Testdatei auszugeben. Hier steht der Text aber vor dem "Miscellaneous= "

 

Const SuchText = "Miscellaneous= /S /server:test.net /pnum:80 /NB"
Const Neu = "Ne Zeile am Ende"

Const Q = "C:\Test\service.ini"
Const Z = "C:\Test\serviceNEU.ini"

Set fso = CreateObject("Scripting.FileSystemObject")

Set OldFile = fso.OpenTextFile(Q, 1)
Lines = Split(OldFile.ReadAll, vbCrLF)
OldFile.Close

Set NewFile = fso.OpenTextFile(Z, 2, True)
For i = 0 To UBound(Lines)
If Instr(LCase(Lines(i)), LCase(SuchText)) Then          NewFile.WriteLine Neu
NewFile.WriteLine Lines(i)
Next
NewFile.Close

 

Mein Ergebnis serviceNEU.ini:

[OCS_SERVICE]
NoProxy=1
Server=test.net
Pnum=80
[b]Ne Zeile am Ende[/b]
Miscellaneous= /S /server:test.net /pnum:80 /NB
PROLOG_FREQ=4
OLD_PROLOG_FREQ=4
TTO_WAIT=2940

 

Könnte man hier z.b. eine

 

Const Neu2 = "Noch ne Zeile am Ende"

 

und die If Abfrage so ändern, dass diese Const auch eingefügt wird?

 

Danke für die Hilfe

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Bin von diesem hier ausgegangen:

varDatei="C:\Programme\OCS Inventory Agent\service.ini"

 

Und genau dort sollte ein User KEINE Schreibrechte haben.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wenns einfach nur 2 Zeilen direkt hinter dem zu ersetzenden "Miscancelous" sein soll:

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"
varReplace = varReplace & CHR(13) & "Ne Zeile unter Misc"
varReplace = varReplace & CHR(13) & "Noch ne Zeile unter Misc"

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Sorry, ja stimmt, habe das Besipiel mit dem Pfad C:\Programme... erläutert, weil ich ein das vorherige beispiel übernommen habe.

Damit ich das Script testen und verstehen kann, ist es doch egal in welche Datei geschrieben wird und wio diese liegt.

 

Wenn ich es verstanden habe und das script anwende, werden die pfad noch anpassen.

 

Aber danke für ein Aufmerkstames lesen, es sollte in Echtbetrieb wirklich kein user im Ordner C:\Programme\.... schreiben dürfen.

Danke Cybquest, ;)

 

das hat super funktioniert, das einzige das ich schon mal gesucht habe ist wie man ein Enter in Textfeld ausgibt, dabei bin ich auf dies gestossen

Chr(13) & Chr(10).

 

Habe das Script auf dies erweitert, und es hat super funktioniert.

varReplace = varReplace & CHR(13) & CHR(10) & "Ne Zeile unter Misc"

varReplace = varReplace & CHR(13) & CHR(10) & "Noch ne Zeile unter Misc"

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Kann man statt der genauen Dateiangabe

varDatei="C:\Programme\OCS Inventory Agent\service.ini"

 

einen Platzhalter verwenden? z.B. C:\Programme\OCS Inventory\Agent\ *.ini

 

Falls man das ganze in einer Schleife laufen lassen möchte, und die Schleife alle *.ini Dateien die in dem Order C:\Programme\OCS Inventory Agent\ mit dem Script abarbeitet?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

So in der Art?

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Programme\OCS Inventory Agent\")

for each file in folder.Files
 if right(file.name,4) = ".ini" then
...
...
 end if
next

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo MAJEG,

 

ist alles kein Problem...

 



Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(".")
For Each oFile In oFolder.Files
sEndung = Mid(oFile.Name, InStr(oFile.Name, "."), _
Len(oFile.Name)- InStr(oFile.Name, ".")+1)
If sEndung = ".ini" Then
MsgBox oFile.Name
End If
Next

[/Code]

 

Hier ein kleines Beispiel. Das Script sucht in dem Verzeichnis, in dem es liegt nach Dateien mit der Endung.ini. Wenn es einen Treffer gibt, kommt eine msgbox mit dem Dateinamen hoch.

Das solltest du ohne große Mühe an deine Bedürfnisse anpassen können...

 

-- Mist-- schon wieder zu langsam :(

 

Gruß

 

Dirk

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

:) Die 2 Codes sind mir klar, diese hab ich verstanden.

 

:confused:

Nur wie kann ich die gefundenen Dateien der schleife an das Script (siehe Code so übergeben das dieser Code durchgeführt wird, dann die Schleife die nächste Datei findet, und wieder den Code durchführt?

 

Den ich habe z.B. die Dateien:

service.ini

service2.ini

service3.ini

usw.

 

 

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"
varReplace = varReplace & CHR(13) & "Ne Zeile unter Misc"
varReplace = varReplace & CHR(13) & "Noch ne Zeile unter Misc"

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo MAJEG,

 

:) Die 2 Codes sind mir klar, diese hab ich verstanden.

 

:confused:

Nur wie kann ich die gefundenen Dateien der schleife an das Script (siehe Code so übergeben das dieser Code durchgeführt wird, dann die Schleife die nächste Datei findet, und wieder den Code durchführt?

 

Den ich habe z.B. die Dateien:

service.ini

service2.ini

service3.ini

usw.

 

 

 

 

du hast doch selbst geschrieben, das du den Code verstanden hast ;)

 

Das könnte ungefähr so aussehen...

 


Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Programme\OCS Inventory Agent\")

for each file in folder.Files
  if right(file.name,4) = ".ini" then
   Set MyFiles = CreateObject("Scripting.FileSystemObject")
   varDatei= folder & "\" & file.name
   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"
   varReplace = varReplace & CHR(13) & Chr(10)& "Ne Zeile unter Misc"
   varReplace = varReplace & CHR(13) & Chr(10)&"Noch ne Zeile unter Misc"

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

 

Gruß

 

Dirk

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Danke für ide promte Hilfe :)

 

ich habe damit gemeint, die Abfrage der Schleife, die Übergabe der gefundenen Datei für die Weiterbearbetung war mir nicht klar.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Hallo MAJEG,

 

 

 

 

du hast doch selbst geschrieben, das du den Code verstanden hast ;)

 

Das könnte ungefähr so aussehen...

 


Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Programme\OCS Inventory Agent\")

for each file in folder.Files
  if right(file.name,4) = ".ini" then
   Set MyFiles = CreateObject("Scripting.FileSystemObject")
   varDatei= folder & "\" & file.name
   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"
   varReplace = varReplace & CHR(13) & Chr(10)& "Ne Zeile unter Misc"
   varReplace = varReplace & CHR(13) & Chr(10)&"Noch ne Zeile unter Misc"

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

 

Gruß

 

Dirk

 

 

Ich würde das Programm gerne auch für .txt Dateien verwenden, bekommen aber eine Fehlermeldung: "Input Past End of File". Als Newbie verstehe ich nicht, warum .htm oder .ini Dateien laufen, aber .txt nicht. .rtf gibt es zwar keinen Fehler, aber es passiert auch nichts.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×