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

Printed on: April 28, 2024 at 02:04 o'clock

Member: Endoro
Endoro Apr 10, 2013 at 15:54:50 (UTC)
Goto Top
Hallo romberto,

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


Gruss!
Member: romberto
romberto Apr 10, 2013 at 16:30:41 (UTC)
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
Member: Endoro
Endoro Apr 10, 2013 at 17:08:58 (UTC)
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!
Member: bastla
bastla Apr 10, 2013 at 19:08:18 (UTC)
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
Member: romberto
romberto Apr 11, 2013 at 10:12:42 (UTC)
Goto Top
Danke bastla,

klappt wunderbar!

Viele Grüße und vielen Dank

Robert