MAJEG 10 Geschrieben 18. März 2009 Autor Melden Teilen Geschrieben 18. März 2009 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 Link zu diesem Kommentar
jaksa 10 Geschrieben 18. März 2009 Melden Teilen Geschrieben 18. März 2009 Hat der User Berechtigung in C:\Programme\ zu schreiben? Link zu diesem Kommentar
MAJEG 10 Geschrieben 18. März 2009 Autor Melden Teilen Geschrieben 18. März 2009 Ja User kann in die Datei Schreiben liegt aber nicht auf C:\Programme\.. Link zu diesem Kommentar
jaksa 10 Geschrieben 18. März 2009 Melden Teilen Geschrieben 18. März 2009 Bin von diesem hier ausgegangen: varDatei="C:\Programme\OCS Inventory Agent\service.ini" Und genau dort sollte ein User KEINE Schreibrechte haben. Link zu diesem Kommentar
Cybquest 36 Geschrieben 18. März 2009 Melden Teilen Geschrieben 18. März 2009 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 Link zu diesem Kommentar
MAJEG 10 Geschrieben 18. März 2009 Autor Melden Teilen Geschrieben 18. März 2009 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" Link zu diesem Kommentar
MAJEG 10 Geschrieben 19. März 2009 Autor Melden Teilen Geschrieben 19. März 2009 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? Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. März 2009 Melden Teilen Geschrieben 19. März 2009 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 Link zu diesem Kommentar
d.stegemann 10 Geschrieben 19. März 2009 Melden Teilen Geschrieben 19. März 2009 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 Link zu diesem Kommentar
MAJEG 10 Geschrieben 20. März 2009 Autor Melden Teilen Geschrieben 20. März 2009 :) 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 Link zu diesem Kommentar
d.stegemann 10 Geschrieben 20. März 2009 Melden Teilen Geschrieben 20. März 2009 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 Link zu diesem Kommentar
MAJEG 10 Geschrieben 20. März 2009 Autor Melden Teilen Geschrieben 20. März 2009 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. Link zu diesem Kommentar
Cybquest 36 Geschrieben 20. März 2009 Melden Teilen Geschrieben 20. März 2009 Statt varDatei= folder & "\" & file.name wäre etwas kürzer auch varDatei= file.Path moglich :) Link zu diesem Kommentar
badted 10 Geschrieben 15. Dezember 2010 Melden Teilen Geschrieben 15. Dezember 2010 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. Link zu diesem Kommentar
Empfohlene Beiträge