VBS Für Änderung Mehere Texte in einer Datei
Hallo
ich benötige etwas Hilfe beim schreibe von vbs.
Ich habe eine Datei die ich in einem bestimmten Bereich mehrere male mit unterschiedlichen zeichen ändern möchte.
z.b
Code
48 7501 Y 33316793.91 X 5691047.817
49 7501 Y 33316800.42 X 5691056.244
50 5283 Y 33316787.42 X 5691025.891
51 5283 Y 33316806.35 X 5691050.084
mehrere Codes in einer Datei in einem bestimmten Bereich ändern
Meine Anfang
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Const ForWriting = 2
' Datei öffnen und Text einlesen und schließen
Set objFile = objFSO.OpenTextFile("test.dat", ForReading)
strText = objFile.ReadAll
objFile.Close
' Änderungen am Inhalt
strNewText = Replace(strText, "5283","5000")
' Änderungen am Inhalt
strNewText = Replace(strText, "7501","7000")
' Neue Datei erstellen mit neuen Inhalten füllen
set resultFile = objFSO.CreateTextFile("test-neu.txt", true)
resultFile.WriteLine strNewText
resultFile.Close
Bitte um Hilfe
ich benötige etwas Hilfe beim schreibe von vbs.
Ich habe eine Datei die ich in einem bestimmten Bereich mehrere male mit unterschiedlichen zeichen ändern möchte.
z.b
Code
48 7501 Y 33316793.91 X 5691047.817
49 7501 Y 33316800.42 X 5691056.244
50 5283 Y 33316787.42 X 5691025.891
51 5283 Y 33316806.35 X 5691050.084
mehrere Codes in einer Datei in einem bestimmten Bereich ändern
Meine Anfang
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Const ForWriting = 2
' Datei öffnen und Text einlesen und schließen
Set objFile = objFSO.OpenTextFile("test.dat", ForReading)
strText = objFile.ReadAll
objFile.Close
' Änderungen am Inhalt
strNewText = Replace(strText, "5283","5000")
' Änderungen am Inhalt
strNewText = Replace(strText, "7501","7000")
' Neue Datei erstellen mit neuen Inhalten füllen
set resultFile = objFSO.CreateTextFile("test-neu.txt", true)
resultFile.WriteLine strNewText
resultFile.Close
Bitte um Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 366757
Url: https://administrator.de/forum/vbs-fuer-aenderung-mehere-texte-in-einer-datei-366757.html
Ausgedruckt am: 24.05.2025 um 00:05 Uhr
13 Kommentare
Neuester Kommentar
Servus.
dein Code hat mehrere Schwachstellen und Fehler.
Erstens folgendes fehlerhaftes Konstrukt:
Zweite Schwachstelle ist das du damit deine Zahlen an irgendeiner Stelle im Text ersetzt, d.h. das auch die Werte in hinteren Textstellen ersetzt werden könnten. Das könntest du nun entweder mit dem Durchlaufen jeder Zeile und dem Extrahieren der Zeichen mit MID() erreichen, oder du machst das ganze komfortabel mit Regular Expressions wie in diesem Beispiel:
Hoffe das klärt deine Fragen.
Grüße Uwe
dein Code hat mehrere Schwachstellen und Fehler.
Erstens folgendes fehlerhaftes Konstrukt:
' Änderungen am Inhalt
strNewText = Replace(strText, "5283","5000")
' Änderungen am Inhalt
strNewText = Replace(strText, "7501","7000")
Das ändert jedes mal immer nur die Quelle , d.h. das strNewText immer nur den einen oder anderen Ersetzungsvorgang enthält, du hättest hier im zweiten Ersetzungsvorgang als ersten Parameter strNewText einsetzen müssen dann hätte am Schluss strNewText beide Ersetzungen enthalten.strNewText = Replace(strText, "5283","5000")
' Änderungen am Inhalt
strNewText = Replace(strText, "7501","7000")
Zweite Schwachstelle ist das du damit deine Zahlen an irgendeiner Stelle im Text ersetzt, d.h. das auch die Werte in hinteren Textstellen ersetzt werden könnten. Das könntest du nun entweder mit dem Durchlaufen jeder Zeile und dem Extrahieren der Zeichen mit MID() erreichen, oder du machst das ganze komfortabel mit Regular Expressions wie in diesem Beispiel:
'Eingabepfad
Const FILEIN = "C:\test.dat"
'Ausgabepfad
Const FILEOUT = "C:\test_out.dat"
'Objekte
Set fso = CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
'Regular Expression Objekteigenschaften festlegen
regex.Global = True: regex.IgnoreCase = True: regex.MultiLine = True
'Dateiinhalt einlesen
strContent = fso.OpenTextFile(FILEIN,1).ReadAll()
'Ersetzungsarrays erstellen
arrSearch = Array("5283","7501")
arrReplace = Array("5000","7000")
'Für jeden Suchterm
For i = 0 To UBound(arrSearch)
'setze den Searchpattern
regex.Pattern = "^(\s+\d+\s+)" & arrSearch(i)
'und ersetze ihn durch den Ersetzungsterm
strContent = regex.Replace(strContent,"$1" & arrReplace(i))
Next
'schreibe den Inhalt in die Ausgabedatei zurück
fso.OpenTextFile(FILEOUT,2,True).Write strContent
MsgBox "Fertig"
Grüße Uwe
Dann hast du deinen Quelltext nicht korrekt gepostet.
Ich gehe davon aus das die zu ersetzende Zahl hinter einer oder mehreren Ziffern und einem oder mehreren Leerzeichen am Zeilenanfang folgt, so wie du oben gepostet hast.
Und die Ausgabe erfolgt natürlich in die Datei die du in Zeile 4 angibst !
Also bitte das nächste mal Quelltext oder Code bitte Codetags verwenden, Danke!
In der Symbolleiste das </> benutzen.
Ich gehe davon aus das die zu ersetzende Zahl hinter einer oder mehreren Ziffern und einem oder mehreren Leerzeichen am Zeilenanfang folgt, so wie du oben gepostet hast.
Und die Ausgabe erfolgt natürlich in die Datei die du in Zeile 4 angibst !
Also bitte das nächste mal Quelltext oder Code bitte Codetags verwenden, Danke!
In der Symbolleiste das </> benutzen.
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.