Entferne Zeilen bzw. Buchstaben aus einer
Textbasierten Datei ….
Hallo Alle zusammen …
Ich möchte gern das Scriptbasierte bearbeiten von Textfiles erarbeiten …
Ich könnte es auch über ExcelMarco machen … finde es aber sehr umständlich, gerade was beim abspeichern herraus kommt.
Daher der Versuch ("jetzt") über das lernenverstehenanwenden von VB.
… bin gern bereit dazu zu lernen … hoffe natürlich auf ein paar helfende Unterstützer !
Was möchte ich gern erreichen :
TextFile einlesen (über varDatei) und Zeilen löschen ( nutze anfängerhaft gezielte Inhalt einer Zeile (strSearch) ) um die Zeile zu identifizieren , um diese dann zu löschen ! Denn das erkenne und zählen von Zeilen ist mir nicht (noch nicht bekannt) !
… wäre super zu wissen, wie ich sagen kann "Einlesen, zähle Zeile 1 bis 5 (auch leere Zeilen) und lösche diese!
Danach den Inhalt der geänderten Datei neu abspeichern (varTmpDatei)
Weiterhin würde ich gern unnötige "Buchstaben" … oder wie auch immer man diese Variablen/String(z.B. "x") nennt, durch ein Leerzeichen ersetzen.
Momentan habe ich folgendes "geschustert :
Leider funktioniert bei einer Erweiterung, also nicht nur ein Suchobjekt (strSearch), es nicht immer . !
Frage : warum löscht er z.B. nicht die Zeile XY wenn dort doch auch z.B. : strSearch = "Datei"
abgefragt wird ?
Also so z.B. :
Muss ich eine Reihenfolge einhalten … oder den Inhalt der Datei komplett einlesen ?
Es wird die Zeile z.B. mit "Datei" NICHT gelöscht, obwohl der String dort zu finden ist? Stört ihn, dass es mehrmals "Datei" gibt … oder woran kann es liegen?
Versteh ich im Moment (noch) nicht … für Hilfe hierbei --- "tausend Dank"!!!
Vielleicht ist meine Herangehensweise auch ganz falsch …
Schön wäre auch eine Info über den Code, der ALLE Dateien mit einer Endung *.rep anspricht
Hallo Alle zusammen …
Ich möchte gern das Scriptbasierte bearbeiten von Textfiles erarbeiten …
Ich könnte es auch über ExcelMarco machen … finde es aber sehr umständlich, gerade was beim abspeichern herraus kommt.
Daher der Versuch ("jetzt") über das lernenverstehenanwenden von VB.
… bin gern bereit dazu zu lernen … hoffe natürlich auf ein paar helfende Unterstützer !
Was möchte ich gern erreichen :
TextFile einlesen (über varDatei) und Zeilen löschen ( nutze anfängerhaft gezielte Inhalt einer Zeile (strSearch) ) um die Zeile zu identifizieren , um diese dann zu löschen ! Denn das erkenne und zählen von Zeilen ist mir nicht (noch nicht bekannt) !
… wäre super zu wissen, wie ich sagen kann "Einlesen, zähle Zeile 1 bis 5 (auch leere Zeilen) und lösche diese!
Danach den Inhalt der geänderten Datei neu abspeichern (varTmpDatei)
Weiterhin würde ich gern unnötige "Buchstaben" … oder wie auch immer man diese Variablen/String(z.B. "x") nennt, durch ein Leerzeichen ersetzen.
Momentan habe ich folgendes "geschustert :
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
varDatei="C:\Test\201902191220.rep"
varTmpDatei="C:\Test\HA174_1-5a.txt"
Set fin = MyFiles.OpenTextFile(varDatei, ForReading)
Set fout = MyFiles.OpenTextFile(varTmpDatei, ForWriting, True)
strSearch = "Fabrikationsnr."
do while not fin.AtEndOfStream
strline = fin.readLine()
if instr(1,strline, strSearch) = 0 then
'Zu entfernende Zeile nicht gefunden, also Zeile ausgeben
fout.writeline strline
end if
loop
Leider funktioniert bei einer Erweiterung, also nicht nur ein Suchobjekt (strSearch), es nicht immer . !
Frage : warum löscht er z.B. nicht die Zeile XY wenn dort doch auch z.B. : strSearch = "Datei"
abgefragt wird ?
Also so z.B. :
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
varDatei="C:\Test\201902191220.rep"
varTmpDatei="C:\Test\HA174_1-5a.txt"
Set fin = MyFiles.OpenTextFile(varDatei, ForReading)
Set fout = MyFiles.OpenTextFile(varTmpDatei, ForWriting, True)
strSearch = "Fabrikationsnr."
strSearch = "Datei"
strSearch = ".rep"
do while not fin.AtEndOfStream
strline = fin.readLine()
if instr(1,strline, strSearch) = 0 then
'Zu entfernende Zeile nicht gefunden, also Zeile ausgeben
fout.writeline strline
end if
loop
Muss ich eine Reihenfolge einhalten … oder den Inhalt der Datei komplett einlesen ?
Es wird die Zeile z.B. mit "Datei" NICHT gelöscht, obwohl der String dort zu finden ist? Stört ihn, dass es mehrmals "Datei" gibt … oder woran kann es liegen?
Versteh ich im Moment (noch) nicht … für Hilfe hierbei --- "tausend Dank"!!!
Vielleicht ist meine Herangehensweise auch ganz falsch …
Schön wäre auch eine Info über den Code, der ALLE Dateien mit einer Endung *.rep anspricht
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 430346
Url: https://administrator.de/contentid/430346
Ausgedruckt am: 04.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
in Deinem zweiten Code-Schnipsel wird nur nach ".rep" gesucht, da Du die Variable "strSearch" dreimal setzt und der letzte Eintrag (strSearch = ".rep") gewinnt. Bei mehreren Suchkriterien müsstest Du Dich mit Arrays beschäftigen (strSearch = "Fabrikationsnr.", strSearch[1] = "Datei", strSearch[2] = ".rep", ...) und bei der Überprüfung eine Schleife über alle Elemente des Arrays laufen lassen.
Gruß - TD
in Deinem zweiten Code-Schnipsel wird nur nach ".rep" gesucht, da Du die Variable "strSearch" dreimal setzt und der letzte Eintrag (strSearch = ".rep") gewinnt. Bei mehreren Suchkriterien müsstest Du Dich mit Arrays beschäftigen (strSearch = "Fabrikationsnr.", strSearch[1] = "Datei", strSearch[2] = ".rep", ...) und bei der Überprüfung eine Schleife über alle Elemente des Arrays laufen lassen.
Gruß - TD
Ich bin nicht so der VB-Crack, aber so müsste es (ungetestet!) klappen:
Gruß - TD
Dim arrStrSearch(3) as String
Dim i as Integer
Dim Found as Boolean
arrStrSearch(1) = "Fabrikationsnr."
arrStrSearch(2) = "Datei"
arrStrSearch(3) = ".rep"
do while not fin.AtEndOfStream
Found = False
strline = fin.readLine()
For i = 1 to 3
if instr(1,strline, strSearch(i)) <> 0 then // Einer Suchbegriffe wurde gefunden
Found = True
end if
Next i
// Falls kein Suchbegriff gefunden wurde, Zeile ausgeben
if Found = False Then
fout.writeline strline
end if
loop
Gruß - TD