VBS - Hinzufügen einer Zeile
Hallo,
ich habe die Anforderung eine neue Zeile (bsp. 155.1.1.2 test.com) in die Hosts-Datei (an das Ende) hinzuzufügen.
Dabei soll vorher überpürft werden, ob die Zeile mit diesem Wert schon vorhanden ist, wenn ja, soll nichts gemacht werdn, wenn nein den wert an das Ende der Datei hinzufügen.
1000DANK!!!!
ich habe die Anforderung eine neue Zeile (bsp. 155.1.1.2 test.com) in die Hosts-Datei (an das Ende) hinzuzufügen.
Dabei soll vorher überpürft werden, ob die Zeile mit diesem Wert schon vorhanden ist, wenn ja, soll nichts gemacht werdn, wenn nein den wert an das Ende der Datei hinzufügen.
1000DANK!!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101596
Url: https://administrator.de/contentid/101596
Ausgedruckt am: 19.11.2024 um 07:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo gdnmarc!
Etwa so:
Einschränkung: Es wird nicht exakt nach einer Zeile, sondern nur nach dem Vorhandensein der Zeile als Teilstring des gesamten in der Datei enthaltenen Textes gesucht - allerdings sollte die Kombination aus IP-Adresse und Hostnamen wohl kaum in einer anderen Zeile enthalten sein.
Wenn Du tatsächlich (genau) zeilenweise vergleichen willst, dann in ein Array einlesen und Zeile für Zeile durchgehen.
Grüße
bastla
Etwa so:
Datei = "D:\Datei.txt"
Zeile = "155.1.1.2 test.com"
Set fso = CreateObject("Scripting.FileSystemObject")
Inhalt = fso.OpenTextFile(Datei).ReadAll
If InStr(1, Inhalt, Zeile, vbTextCompare) = 0 Then
fso.OpenTextFile(Datei, 8).WriteLine Zeile
End If
Wenn Du tatsächlich (genau) zeilenweise vergleichen willst, dann in ein Array einlesen und Zeile für Zeile durchgehen.
Grüße
bastla
Hallo gdnmarc!
Dann eben auf die harte Tour ...
Grüße
bastla
Dann eben auf die harte Tour ...
Datei = "D:\Datei.txt"
ZeileNeu = "155.1.1.2 test.com"
Set fso = CreateObject("Scripting.FileSystemObject")
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf) 'gesamte Datei in Array Zeilen einlesen
Append = True 'Schalter für "Zeile hinzufügen" setzen
For i = 0 To UBound(Zeilen) 'alle eingelesenen Zeilen durchgehen
If StrComp(Trim(Zeilen(i)), ZeileNeu, vbTextCompare) = 0 Then 'Gibt es die neue Zeile schon (ev Leerzeichen an Anfang und/oder Ende der Zeile werden ignoriert)?
Append = False 'Wenn ja, dann keine Zeile hinzufügen ...
Exit For '... und die weiteren Zeilen nicht mehr überprüfen.
End If
If InStr(1, Zeilen(i), ZeileNeu, vbTextCompare) > 0 Then 'Ist die neue Zeile in der aktuell überprüften Zeile enthalten ...
If Left(Zeilen(i), 1) = "#" Then '... und beginnt diese Zeile mit "#", ...
Zeilen(i) = Mid(Zeilen(i), 2) '... dann "#" entfernen und ...
Write = True '... vormerken, dass die Datei neu geschrieben werden muss.
Append = False 'Die neue Zeile muss nicht hinzugefügt werden.
Exit For 'Auch hier kann das Prüfen der restlichen Zeilen entfallen.
End If
End If
Next
If Append Then 'Wenn die neue Zeile hinzugefügt werden muss, ...
fso.OpenTextFile(Datei, 8).WriteLine ZeileNeu '... machen wir das, ...
ElseIf Write Then '... ansonsten noch prüfen, ob neu geschrieben werden muss (da "#" entfernt) ...
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLf) '... und dieses ausführen.
End If
bastla