Suchen ersetzen vbs script ab Zeichen X
Hallo,
ich verwendet folgendes Script um in einer CSV Datei Daten ersetzen zu lassen
Es wird nach ISBN gesucht und durch "DATG" ersetzt,
funktioniert auch soweit ganz gut,
nur was muss ich verändern, wenn er alles AB dem Zeichen"BTST" löschen soll und nicht wie in diesem Fall ersetzen durch ""
Über eine Information wäre ich dankbar.
ich verwendet folgendes Script um in einer CSV Datei Daten ersetzen zu lassen
Dim objFso
Dim objWshShell
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Dim dieDatei, Rueckgabe, dateiAngabe, Servername
dateiAngabe = "C:\temp\DTAG.csv"
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1)
Rueckgabe=Replace(dieDatei.ReadAll,"ISBN","DATG")
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2)
dieDatei.Write(Rueckgabe)
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1)
Rueckgabe=Replace(dieDatei.ReadAll,"BTST","")
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2)
dieDatei.Write(Rueckgabe)
dieDatei.Close
Es wird nach ISBN gesucht und durch "DATG" ersetzt,
funktioniert auch soweit ganz gut,
nur was muss ich verändern, wenn er alles AB dem Zeichen"BTST" löschen soll und nicht wie in diesem Fall ersetzen durch ""
Über eine Information wäre ich dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208388
Url: https://administrator.de/contentid/208388
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
7 Kommentare
Neuester Kommentar
[OT]
Moin colinardo,
is' sich ja ein guter Plan - außer wenn nun in der behandelten Datei mal kein String "BTST" gefunden wird.
Dann ist die "neue" Datei auch nur Left(dieDatei.ReadAll, 0 +4 ) Zeichen lang.
Geht mich ja nix an, aber Schattenparker wie ich würden vor lauter Angst noch eine IF-Abfrage "isdenn Instr(,,) > 0" drumherumwickeln.
Grüße
Biber
[/OT]
Moin colinardo,
is' sich ja ein guter Plan - außer wenn nun in der behandelten Datei mal kein String "BTST" gefunden wird.
Dann ist die "neue" Datei auch nur Left(dieDatei.ReadAll, 0 +4 ) Zeichen lang.
Geht mich ja nix an, aber Schattenparker wie ich würden vor lauter Angst noch eine IF-Abfrage "isdenn Instr(,,) > 0" drumherumwickeln.
Grüße
Biber
[/OT]
Hallo svenac2010!
Noch als Anmerkung: Das zwischenzeitliche Schreiben und neuerliche Einlesen ist relativ sinnfrei - da der gesamte Dateiinhalt sich ja ohnehin schon in der Variablen "Rueckgabe" befindet, kann dieser einfach per
aufbereitet und dann wieder geschrieben werden ...
Grüße
bastla
Noch als Anmerkung: Das zwischenzeitliche Schreiben und neuerliche Einlesen ist relativ sinnfrei - da der gesamte Dateiinhalt sich ja ohnehin schon in der Variablen "Rueckgabe" befindet, kann dieser einfach per
M = "BTST"
P = InStr(Rueckgabe, M)
If P > 0 Then Rueckgabe = Left(Rueckgabe, P + Len(M))
Grüße
bastla
Hallo Sven,
da du eine CSV-Datei erwähnst, ist der String in jeder Zeile vorhanden ?
poste uns doch bitte mal ein Beispiel aus der CSV ...
p.s.
da du eine CSV-Datei erwähnst, ist der String in jeder Zeile vorhanden ?
poste uns doch bitte mal ein Beispiel aus der CSV ...
p.s.
korrigierter Code bei einmaligem vorhanden sein des Strings "BTST" in der Datei
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
dateiAngabe = "C:\temp\DTAG.csv"
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1)
Rueckgabe=Replace(dieDateiRead.ReadAll,"ISBN","DATG")
dieDatei.Close()
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2)
M = "BTST"
P = InStr(Rueckgabe, M)
If P > 0 Then Rueckgabe = Left(Rueckgabe, P + Len(M))
dieDatei.Write(Rueckgabe)
dieDatei.Close()
Alternativ Code für das kürzen jeder Zeile ab dem String "BTST"
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
filePath = "C:\temp\DTAG.csv"
Set objTextFileRead = objFSO.OpenTextFile(filePath, ForReading)
strFinal = ""
Do Until objTextFileRead.AtEndOfStream
strNextLine = objTextFileRead.Readline
If strNextLine <> "" Then
strSearch = "BTST"
intStringPosition = InStr(strNextline, strSearch)
If intStringPosition > 0 Then
strFinal = strFinal & Left(strNextLine,intStringPosition + Len(strSearch)) & vbCrLf
Else
strFinal = strFinal & strNextLine & vbCrLf
End if
End if
Loop
objTextFileRead.Close()
Set objTextFileWrite = objFSO.OpenTextFile(filePath, ForWriting)
objTextFileWrite.Write(strFinal)
objTextFileWrite.Close()
[OT]
@svenac2010
Da warte ich schon seit Bestehen des Beitrags drauf, endlich mein "works as designed" loswerden zu können. Ich dachte mir schon, dass du das "alles" aus "alles löschen ab String x" im Titel und Anforderungsbeschreibung nicht so wörtlich meinst.
@colinardo
In den beiden letzten Schnipseln haben wir nun - wie bei einer echten Teamarbeit - bei den Variablennamen alle denkbaren Namenskonventionen verewigt.
Von "dateiAngabe" und "Rueckgabe" über "strNextLine" und "FinalString" nach "M" und "P" bis zum zusammengedenglischten "dieDateiWrite".
Im normalen Unternehmensalltag würden wir es jetzt genau so produktiv setzen.
Grüße
Biber
[/OT]
@svenac2010
Da warte ich schon seit Bestehen des Beitrags drauf, endlich mein "works as designed" loswerden zu können. Ich dachte mir schon, dass du das "alles" aus "alles löschen ab String x" im Titel und Anforderungsbeschreibung nicht so wörtlich meinst.
@colinardo
In den beiden letzten Schnipseln haben wir nun - wie bei einer echten Teamarbeit - bei den Variablennamen alle denkbaren Namenskonventionen verewigt.
Von "dateiAngabe" und "Rueckgabe" über "strNextLine" und "FinalString" nach "M" und "P" bis zum zusammengedenglischten "dieDateiWrite".
Im normalen Unternehmensalltag würden wir es jetzt genau so produktiv setzen.
Grüße
Biber
[/OT]