Inhalt einer Textdatei löschen
Marco Eder
- vb-script
0 srob
Guten Morgen Forum
Wieder mal ne Frage. In meinem VB-Script lese ich die Hardware des PC's raus, was auch schon ziemlich gut klapt. Nun lese ich noch mit Hilfe von ipconfig -all die Netzwerkkonfiguration aus, und schreibe dies in eine Datei. Nun brauche ich aber nicht alle Informationen, die ipconfig liefert.
Ich mache mich jetzt also mal auf die Suche nach einem nicht benötigten Punkt(z.B Primärer DNS-Suffix):
Dim SuchZf, SuchZeichen, MeinePosition
SuchZf = Netzwerk
SuchZeichen = "Prim"
MeinePosition = InStrRev(SuchZf, SuchZeichen)
textstream.writeline MeinePosition
Netzwerk ist die Variable mit dem Inhalt von Ipconfig -all. Nun gibt das die Position aus in Zeichen, seit dem Beginn der Variable. Nun möchte ich diese Zeile löschen, weiss aber nicht, wie das funktioniert... Vielleicht kann mir ja jemand von euch weiterhelfen.
Danke
Gruss Marco
Hi Marco,
Du könntest den String in ein Array splitten, und nur die daraus benötigten Zeilen wieder zu einem String concatenieren.
HTH Robert
Hi Marco,
Hi
und nur die daraus benötigten Zeilen wieder zu einem String concatenieren.
Dann ist aber das Problem, wie kann ich angeben, welche Zeile er auslesen soll? Und das muss ich ja dann auch nicht in ein Array splitten. Einfacher wäre es wahrscheinlich, suchen nach einer gewissen Zeile, die auslesen und reinschreiben. Dafür brauche ich kein Array, denke ich.
Nur wäre die Lösung mit löschen eleganter, da nur ein kleiner Teil gelöscht werden müsste.
HTH Robert
Gruss Marco
Hi
Dann ist aber das Problem, wie kann ich angeben, welche Zeile er auslesen soll?
keine Ahnung, was Du meinst... In Deinem ersten Posting sagtest Du: "Ich mache mich jetzt also mal auf die Suche nach einem nicht benötigten Punkt(z.B Primärer DNS-Suffix): [...]". Mit dem Split-Ansatz erzeugst Du ein Array, iterierst über die Elemente und entscheidest dabei jeweils, ob der Inhalt (oder die dessen erste x Zeichen) nicht Deinen Ausschluß-Strings gleichen (etwa das von Dir genannte "Prim") und concatenierst die nicht auszuschliessenden. Mit diesem langatmigen Getippe liegt der Quellcode fast schon fertig vor Dir...
Nur wäre die Lösung mit löschen eleganter, da nur ein kleiner Teil gelöscht werden müsste.
Hier ist mir auch nicht klar, was Du meinst - das Ergebnis ist bei beiden Ansätzen dasselbe: ein String, in dem gegenüber der usprünglichen Rückgabe von ipconfig bestimmte Zeilen entfernt wurden. Hinsichtlich Eleganz wäre ich mir auch nicht sicher, ob das Rausoperieren von Substrings aus einem längeren String über Positionsangaben gegen die klare Vorgehensweise Split/Iteration-über-die-Arrayelement-mit-selektiver-Concatenation obsiegt. Beim Rumknusseln mit Deinen Substrings unterstelle ich:
- höheren Ressourcenverbrauch
- längere Laufzeit
- geringere Wahrscheinlichkeit darauf, daß das Skript später erfolgreich gelesen und gewartet/weiterentwickelt werden kann
HTH Robert
Vielen Dank für deine Hilfe. Ich habe es jetzt aber anderst gelöst.
Nämlich so:
Dim ts, s, SuchZf, SuchZeichen, Pos, fsx, tsx, host
Set fso = CreateObject("Scripting.FileSystemObject")
textstream.writeline "NetzwerkInformationen"
textstream.writeline "---------------------"
textstream.WriteBlankLines 1
Set ts = fso.OpenTextFile("U:\Projekte\vbs\datei.txt", ForReading)
s = ts.ReadAll
SuchZf = s
Set fsx = CreateObject("Scripting.FileSystemObject")
Set tsx = fsx.CreateTextFile("U:\Projekte\vbs\datei2.txt",True)
tsx.write(s)
Set tsx = fsx.OpenTextFile("U:\Projekte\vbs\datei2.txt",1)
SuchZeichen = "Hostname"
Pos = InStrRev(SuchZf, SuchZeichen)
pos = pos - 1
tsx.skip(pos)
host = tsx.ReadLine
textstream.writeline host
Muss ich nur noch ein bisschen vereinfachen, aber es funktioniert.
Gruss Ganja