VBS entfernen von "Grad" Zeichen in TXT Datei
Hallo zusammen,
ich habe hier ein Problem mit dem entfernen von dem Zeichen " ° " in einer TXT Datei mit VBS.
Der Aufbau der TXT Datei sieht wie folgt aus:
90.809° ;9;1
Benötigt wird aber:
90.809 ;9;1
Ich habe folgendes script versucht:
Ich habe schon verschiedene Versionen (nur das ° bzw. den ganzen Block) versucht, leider ohne Erfolg.
Wenn ich allerdings die "." durch ein "," ersetzen lasse, funktioniert das ganze ohne Probleme.
Kann mir hier evtl. jemand helfen?
Vielen Dank
ich habe hier ein Problem mit dem entfernen von dem Zeichen " ° " in einer TXT Datei mit VBS.
Der Aufbau der TXT Datei sieht wie folgt aus:
90.809° ;9;1
Benötigt wird aber:
90.809 ;9;1
Ich habe folgendes script versucht:
Datei = "C:\Test\\test.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(Datei).ReadAll
fso.CreateTextFile(Datei).Write Replace(T, "° ;9;1", ";9;1")
Ich habe schon verschiedene Versionen (nur das ° bzw. den ganzen Block) versucht, leider ohne Erfolg.
Wenn ich allerdings die "." durch ein "," ersetzen lasse, funktioniert das ganze ohne Probleme.
Kann mir hier evtl. jemand helfen?
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 611141
Url: https://administrator.de/contentid/611141
Ausgedruckt am: 16.11.2024 um 05:11 Uhr
7 Kommentare
Neuester Kommentar
Schau dir mal den letzten Parameter der Replace-Funktion an ("compare"), dann wirst du erkennen das per Default ein "Binary" Vergleich vorgenommen wird und kein reiner Textvergleich. D.h. also wenn dann die Skriptdatei ein anderes Encoding hat als die Zieldatei es mit "Binary" und solche Sonderzeichen Probleme gibt wie du gerade siehst, nimm also den als letzten Parameter vbTextCompare bzw. alternativ eine 1:
https://www.w3schools.com/asp/func_replace.asp
Zusätzlich sollte man natürlich beachten welches Encoding die Textdatei hat und beim Einlesen mit OpenTextfile die entspprechende Option setzen. Zum Einlesen und Beschreiben von UTF8 Files sollte man stattdessen auf ein ADODB.Stream Objekt ausweichen.
https://www.w3schools.com/asp/func_replace.asp
Replace(T, "°", "",1,-1,1)
Sub WriteUTF8(file, txt)
With CreateObject("ADODB.Stream")
.Type = 2 : .Charset = "UTF-8" : .Open
.WriteText txt
.SaveToFile file, 2
.Close
End With
End Sub
Function ReadUTF8(file)
With CreateObject("ADODB.Stream")
.Type = 2 : .Charset = "UTF-8" : .Open : .LoadFromFile(file)
ReadUTF8 = .ReadText
.Close
End With
End Function
txt = Replace(ReadUTF8("C:\Test\test.txt"),"°","",1,-1,1)
WriteUTF8 "C:\Test\test_neu.txt", txt
Bitte dann auch den Beitrag als gelöst markieren. Danke.
Zitat von @Goblins:
Gibt es da eine Möglichkeit das zu ändern, bzw. könntest du mir dabei nochmal helfen?
Dann ändere halt in der Funktion zum Einlesen der Daten (ReadUTF8) das Encoding in der entsprechenden Property aufGibt es da eine Möglichkeit das zu ändern, bzw. könntest du mir dabei nochmal helfen?
.Charset = "iso-8859-1"
Mitdenken erwünscht ...https://docs.microsoft.com/en-us/previous-versions/exchange-server/excha ...