romberto
Goto Top

Lösche per Batch bestimmte Zeichenfolge oder Satzfolge anhand einer vorgegebenen Liste

Die ist eine weiterführende Frage beruhend auf diesem Thread:

https://www.administrator.de/forum/per-batch-texteile-entfernen-und-vers ...

Zur Beantwortung ist das lesen des Threads aber nicht zwingend Notwendig.

Ich habe eine Texdatei mit folgendem Aufbau:

Datei;Datum;Beschreibung

Nun wurde diese aus telweise recht aufwendigen Ascii Kunstwerken erstellt, was eine Flut an Sonderzeichen zur Folge hat. Den Großteil davon konnte ich schon mittels eines Scriptes in den Griff bekommen. Was übrig bleibt sind teilweise immer wieder kehrende Satzbausteine und Zeichenfolgen:

Beispiel:

ma-mmm.txt;12-03-1980;l_____l____\___X|l____\-l___\----------------Musterplan A-3========================[Bearbeitet von MA]==
xx-xxx.zip:15-06-1983;`--\__|--:--:--\__|--:--:--l___\--Aktenordner / Planübersicht

Nun sind "l_____l____\___X|l____\-l___\----------------" oder "========================[Bearbeitet von MA]==" Bausteine die immer wiederkehren und sich somit leicht ersetzen lassen.


Ich möchte nun also meine Original Datei per Batch nach diesen Bausteinen durchsuchen und diese löschen.

Die Bausteine möchte ich in einer Textdatei eintragen kann (Pro Abfolge eine Zeile):

l_____l____\___X|l____\-l___\----------------
========================[Bearbeitet von MA]==
`--\__|--:--:--\__|--:--:--l___\--

so dass diese bei neu auftauchenden Bausteinen stetig erweitert werden kann.

Würde mich freuen wenn sich jemand meiner Sache annimmt.

Vielen Dank schonmal fürs anschauen und viele Grüße

Robert

Content-Key: 204752

Url: https://administrator.de/contentid/204752

Ausgedruckt am: 29.03.2024 um 07:03 Uhr

Mitglied: Endoro
Endoro 10.04.2013 um 17:54:50 Uhr
Goto Top
Hallo romberto,

es könnte mit der "/g:" Option von findstr gehen, wenn du sonst keine andere Idee hast ...


Gruss!
Mitglied: romberto
romberto 10.04.2013 um 18:30:41 Uhr
Goto Top
Hi Endoro,

danke für den Tip. Mit dem selbst erstellen / verstehen tue ich mich allerdings noch etwas schwer -> ich kann aber verstehen, dass das hier ein ziemlich ausgelatschtes Thema ist face-smile - Habe mich jedoch die letzten Stunden vergebens durch die eta 50.000 Suchtreffer hier gewühlt. Ein einzelnes Wort ersetzen -> kein Problem, eine komplette Zeile -> zu Haufen gefunden, aber einen Satzteil anhand einer Liste zu löschen, ohne dabei den Rest der Zeile zu löschen, dazu finde ich leider rein garnichts face-confused
Mitglied: Endoro
Endoro 10.04.2013 um 19:08:58 Uhr
Goto Top
Hallo Robert,

das geht nicht nur mit findstr. Das könnte man aber selber scripten, einen "search-and-replace"-Hybriden aus Batch und VBS anpassen oder vllt. ein gnuWIN-Tool mit Regex benutzen, oder... Kommt darauf an, wiviele Daten umzuwandeln sind & wieviel Zeit dafür zur Verfügung steht (scripten, einarbeiten usw.). Ich kann nur Batch face-smile


Gruss!
Mitglied: bastla
bastla 10.04.2013 um 21:08:18 Uhr
Goto Top
@ Endoro
einen "search-and-replace"-Hybriden aus Batch und VBS anpassen
... oder gleich ein VBS-only-Script der Art
Ein   = "D:\DeinText.txt"  
Aus =   "D:\DeinText_bereinigt.txt"  
Liste = "D:\Ersetzungsliste.txt"  

Set fso = CreateObject("Scripting.FileSystemObject")  
T = fso.OpenTextFile(Ein).ReadAll
E = Split(fso.OpenTextFile(Liste).ReadAll, vbNewline)

For Each Ersetzung In E
    If Trim(Ersetzung) <> "" Then 'Zeile nicht leer  
        T = Replace(T, Ersetzung, "")  
    End If
Next

fso.CreateTextFile(Aus).Write T
verwenden ...

Grüße
bastla
Mitglied: romberto
romberto 11.04.2013 um 12:12:42 Uhr
Goto Top
Danke bastla,

klappt wunderbar!

Viele Grüße und vielen Dank

Robert