WinFuture-Forum.de: Text filtern mit Hilfe von Batch - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Text filtern mit Hilfe von Batch


#1 Mitglied ist offline   Booster123 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 04. November 19
  • Reputation: 0

geschrieben 04. November 2019 - 11:34

Guten Tag liebe Leute,

ich habe ein "kleines" Problem und hoffe in diesem Forum auf Hilfe!

Mit Hilfe einer von mir zu erstellenden Batch Datei, soll ich aus einer Textdatei bestimmte Zeilen rauskopieren, jedoch bin ich am verzweifeln und hoffe nun um eure Hilfe.

die Textdatei sieht wie folgt aus (Ausschnitt)

UNA:+,? '
UNB+UNOC:3+104027544+999999999+190819:0000+00170++BK05Q419ke0'
UNH+00001+KOTR:02:001:KV'
IDK+100820488+99+Brandenburgische BKK'
VDT+20100101'
FKT+01'
VKG+01+100820488+5++++++00'
VKG+03+661430046+5++07++++00'
VKG+09+661430046+5++28++++00'
VKG+09+661430046+5++29++++00'
NAM+01+Brandenburgische+Betriebskrankenkasse'
ANS+1+15890+Eisenhüttenstadt+Werkstr. 10'
UNT+000011+00001'
UNH+00002+KOTR:02:001:KV'
IDK+101320032+99+SECURVITA BKK'
VDT+20100701'
FKT+01'
VKG+01+101320032+5++++++00'
VKG+03+107436557+5++07++++00'
VKG+09+107436557+5++28++++00'
VKG+09+107436557+5++29++++00'
NAM+01+SECURVITA+Betriebskrankenkasse'
ANS+1+20099+Hamburg+Lübeckertordamm 1-3'
ANS+2+20039+Hamburg+105829'
UNT+000012+00002'
UNH+00003+KOTR:02:001:KV'
...
...
UNZ+000393+00170'




Meine Aufgabe besteht darin, alle IDK, VKG und NAM rauszukopieren, natürlich in einem Block zusammen sprich die erste Lösung wäre:
IDK+100820488+99+Brandenburgische BKK
VKG+03+107436557+5++07++++00
NAM+01+Brandenburgische+Betriebskrankenkasse....

Zudem gibt es verschiedene VKG's jedoch muss durch eine Schleife die richtige gesucht werden.
Ein Plus wäre es noch zudem bei IDK die Nummer und den Namen zu trennen und in einzelne Zeilen wiederzugeben.

(bei der VKG schleife wird erstmal nach VKG+03..............++++41 gesucht, dann VKG+03......++++00 usw)

Vielen Dank im Voraus für eure Bemühungen.

MfG der Booster123
0

Anzeige



#2 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 13.633
  • Beigetreten: 08. April 06
  • Reputation: 623

geschrieben 04. November 2019 - 12:16

Handelt es sich um eine ASCII-Kompatible Textdatei oder sind da irgendwelche Formatinfos mit hinterlegt (Word bspw.)?

Wenn es ASCII Kompatibel ist wäre das eine Möglichkeit
@echo off
find "IDK" X:\PFAD\ZUR\TEXT-DATEI\TEXT.TXT > X:\PFAD\ZUR\GEFILTERTEN\TEXT-DATEI\TEXT.TXT
find "VKG" X:\PFAD\ZUR\TEXT-DATEI\TEXT.TXT >> X:\PFAD\ZUR\GEFILTERTEN\TEXT-DATEI\TEXT.TXT
find "NAM" X:\PFAD\ZUR\TEXT-DATEI\TEXT.TXT >> X:\PFAD\ZUR\GEFILTERTEN\TEXT-DATEI\TEXT.TXT



hier wird nacheinander nach den Möglichkeiten gesucht und der Zieldatei hinzugefügt.

Achtung: "Neuausführen" überschreibt! die evtl. bestehende Zieldatei vollständig.
0

#3 Mitglied ist offline   Booster123 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 04. November 19
  • Reputation: 0

geschrieben 04. November 2019 - 12:29

Vielen Dank für die schnelle Antwort.
Es handelt sich um eine Textdatei aus dem Internet, die ich über den Browser öffne.
Jedoch vorher dann abspeicher mit Word, sodass die Batch-Datei darauf zugreifen kann.

Wie wäre denn eine Schleife für die VKG intergrierbar? Es sind meistens mehrere gegeben jedoch bräuchte ich jeweils nur eine. In einigen fällen ist sogar keine gegeben, sodass die schleife bei keinem Fund weiter gehen müsste.

Dieser Beitrag wurde von Booster123 bearbeitet: 04. November 2019 - 12:31

0

#4 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 13.633
  • Beigetreten: 08. April 06
  • Reputation: 623

geschrieben 04. November 2019 - 12:57

Beitrag anzeigenZitat (Booster123: 04. November 2019 - 12:29)

Vielen Dank für die schnelle Antwort.
Es handelt sich um eine Textdatei aus dem Internet, die ich über den Browser öffne.
Jedoch vorher dann abspeicher mit Word, sodass die Batch-Datei darauf zugreifen kann.


empfehle die Datei besser mit reinein Texteditoren wie bspw. NOTEPAD zu speichern damit Word nicht seinen Mist da hinein interpretiert

Zitat

Wie wäre denn eine Schleife für die VKG intergrierbar? Es sind meistens mehrere gegeben jedoch bräuchte ich jeweils nur eine. In einigen fällen ist sogar keine gegeben, sodass die schleife bei keinem Fund weiter gehen müsste.


Die Schleife geht ja weiter. Es wird nach VKG gesucht und die Ausgabe in eine TXT-Datei umgeleitet. Wird nix gefunden geht die Schleife zur nächsten Batch-Zeile über.

Ansonsten bitte etwas genauer beschreiben :)
0

#5 Mitglied ist offline   Booster123 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 04. November 19
  • Reputation: 0

geschrieben 04. November 2019 - 13:03

[quote name='Stefan_der_held' timestamp='1572866199' post='2015254']
Handelt es sich um eine ASCII-Kompatible Textdatei oder sind da irgendwelche Formatinfos mit hinterlegt (Word bspw.)?

Wenn es ASCII Kompatibel ist wäre das eine Möglichkeit


Habe es jetzt so gemacht und er filtert mir auch die ganzen Daten, jedoch nicht als Block sondern erst alle IDK's, dann alle VKG's und dann die ganzen NAM's. Gibt es denn eine Möglichkeit sie in einem Block ausgeben zu lassen, sodass man eine Zugehörigkeit hat?

[quote name='Stefan_der_held' timestamp='1572868670' post='2015257']
empfehle die Datei besser mit reinein Texteditoren wie bspw. NOTEPAD zu speichern damit Word nicht seinen Mist da hinein interpretiert



Die Schleife geht ja weiter. Es wird nach VKG gesucht und die Ausgabe in eine TXT-Datei umgeleitet. Wird nix gefunden geht die Schleife zur nächsten Batch-Zeile über.

Ansonsten bitte etwas genauer beschreiben :)
[/quote]

Es gibt auch "Blöcke" in denen mehrere VKG's gegeben sind. Ich bräuchte eine schleife die es so absucht wie ich es bräuchte.

Ein Beispiel "Block"


IDK+101592133+99+CITY BKK/Ost KöRiA'
VDT+20110701'
FKT+01'
VKG+01+101592133+5++++++00'
VKG+03+660510336+5++07++++10'
VKG+09+660510336+5++28++++10'
VKG+09+660510336+5++29++++10'
VKG+03+660510336+5++07++++20'
VKG+09+660510336+5++28++++20'
VKG+09+660510336+5++29++++20'
VKG+03+660510336+5++07++++71'
VKG+09+660510336+5++28++++71'
VKG+09+660510336+5++29++++71'
VKG+03+660510336+5++07++++72'
VKG+09+660510336+5++28++++72'
VKG+09+660510336+5++29++++72'
VKG+03+104027544+5++07++++30'
VKG+09+101592133+5++28++++30'
VKG+09+101592133+5++29++++30'
VKG+03+660510336+5++07++++40'
VKG+09+660510336+5++28++++40'
VKG+09+660510336+5++29++++40'
VKG+03+660510336+5++07++++50'
VKG+09+660510336+5++28++++50'
VKG+09+660510336+5++29++++50'
VKG+03+660510336+5++07++++55'
VKG+09+660510336+5++28++++55'
VKG+09+660510336+5++29++++55'
VKG+03+660510336+5++07++++56'
VKG+09+660510336+5++28++++56'
VKG+09+660510336+5++29++++56'
VKG+03+660510336+5++07++++57'
VKG+09+660510336+5++28++++57'
VKG+09+660510336+5++29++++57'
VKG+03+660510336+5++07++++61'
VKG+09+660510336+5++28++++61'
VKG+09+660510336+5++29++++61'
VKG+03+660510336+5++07++++62'
VKG+09+660510336+5++28++++62'
VKG+09+660510336+5++29++++62'
VKG+03+660510336+5++07++++65'
VKG+09+660510336+5++28++++65'
VKG+09+660510336+5++29++++65'
VKG+03+660510336+5++07++++66'
VKG+09+660510336+5++28++++66'
VKG+09+660510336+5++29++++66'
VKG+03+660510336+5++07++++67'
VKG+09+660510336+5++28++++67'
VKG+09+660510336+5++29++++67'
VKG+03+660510336+5++07++++68'
VKG+09+660510336+5++28++++68'
VKG+09+660510336+5++29++++68'
VKG+03+660510336+5++07++++69'
VKG+09+660510336+5++28++++69'
VKG+09+660510336+5++29++++69'
NAM+01+CITY Betriebskrankenkasse+Gesch.Ber. Neue Bundesländer+Körperschaft in Abwicklung'
ANS+1+70178+Stuttgart+Hauptstätter Str. 68-70'
UNT+000059+00027'
UNH+00028+KOTR:02:001:KV'


Danke :D
0

#6 Mitglied ist offline   Booster123 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 04. November 19
  • Reputation: 0

geschrieben 20. November 2019 - 16:19

Beitrag anzeigenZitat (Stefan_der_held: 04. November 2019 - 12:16)

Handelt es sich um eine ASCII-Kompatible Textdatei oder sind da irgendwelche Formatinfos mit hinterlegt (Word bspw.)?

Wenn es ASCII Kompatibel ist wäre das eine Möglichkeit
@echo off
find "IDK" X:\PFAD\ZUR\TEXT-DATEI\TEXT.TXT > X:\PFAD\ZUR\GEFILTERTEN\TEXT-DATEI\TEXT.TXT
find "VKG" X:\PFAD\ZUR\TEXT-DATEI\TEXT.TXT >> X:\PFAD\ZUR\GEFILTERTEN\TEXT-DATEI\TEXT.TXT
find "NAM" X:\PFAD\ZUR\TEXT-DATEI\TEXT.TXT >> X:\PFAD\ZUR\GEFILTERTEN\TEXT-DATEI\TEXT.TXT



hier wird nacheinander nach den Möglichkeiten gesucht und der Zieldatei hinzugefügt.

Achtung: "Neuausführen" überschreibt! die evtl. bestehende Zieldatei vollständig.



hey, sag mal gibt es hier auch die Möglichkeit, dass mir die Daten auch in der Richtigen Reihenfolge ausgegeben werden?

So werden mir erst alle Datensätze mit "IDK" ausgegeben, darunter alle Datensätze mit "VKG" und da drunter dann alle Datensätze mit "NAM".

BSP:

IDK
IDK
IDK

VKG
VKG

NAM
NAM
NAM

was ich benötige ist:

IDK
VKG
NAM

Die Datensätze sind auch in der Textdatei untereinander, sodass keine Zuordnung nötig wäre.


Vielen Dank im Voraus.
0

#7 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.766
  • Beigetreten: 20. Juli 07
  • Reputation: 1.099

geschrieben 20. November 2019 - 18:01

Powershell nehmen, einen passenden Parser für das Dateiformat schreiben und dann die Daten strukturiert ausgeben.

Ist sehr viel verständlicher und vor allem auch weniger aufwendig als mit Batch. Alles was Du benötigst ist eine Spezifikation für das Dateiformat, sprich welches Zeichen steht wofür, damit man das auswerten kann.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#8 Mitglied ist offline   Booster123 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 04. November 19
  • Reputation: 0

geschrieben 21. November 2019 - 11:32

Beitrag anzeigenZitat (RalphS: 20. November 2019 - 18:01)

Powershell nehmen, einen passenden Parser für das Dateiformat schreiben und dann die Daten strukturiert ausgeben.

Ist sehr viel verständlicher und vor allem auch weniger aufwendig als mit Batch. Alles was Du benötigst ist eine Spezifikation für das Dateiformat, sprich welches Zeichen steht wofür, damit man das auswerten kann.




Vielen Dank erst einmal für die schnelle Antwort, jedoch kann ich damit 0 Anfangen. Habe keine Kenntnisse in PowerShell
Und auch keine Ahnung Spezifikationen zu definieren.

Dieser Beitrag wurde von Booster123 bearbeitet: 21. November 2019 - 11:32

0

#9 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 18.991
  • Beigetreten: 19. August 04
  • Reputation: 1.193

geschrieben 21. November 2019 - 11:50

Das Ganze würde vermutlich auch mit einer Batch gehen, aber mir ist noch nicht so ganz klar, was da als Ausgabe erscheinen soll.

Von den VKG Zeilen gibt es ja einige. Nach welchen Kriterien soll da die gewünschte Zeile ausgewählt werden? Das Selbe gilt auch für ANS. Und, für die einzelnen Blöcke in der Datei, haben die spezifische Start un Endmarkierungen/Zeilen, so dass man einen Block einzeln identifizieren kann?

Aber das ist wirklich kompliziert. Mit einer einfachen, leicht verständlichen Batch ist das wohl nicht getan.
Nutella hat nur sehr wenig Vitamine.
Deswegen muss man davon relativ viel essen.
0

#10 Mitglied ist offline   Booster123 

  • Gruppe: Mitglieder
  • Beiträge: 8
  • Beigetreten: 04. November 19
  • Reputation: 0

geschrieben 21. November 2019 - 14:06

Beitrag anzeigenZitat (DK2000: 21. November 2019 - 11:50)

Das Ganze würde vermutlich auch mit einer Batch gehen, aber mir ist noch nicht so ganz klar, was da als Ausgabe erscheinen soll.

Von den VKG Zeilen gibt es ja einige. Nach welchen Kriterien soll da die gewünschte Zeile ausgewählt werden? Das Selbe gilt auch für ANS. Und, für die einzelnen Blöcke in der Datei, haben die spezifische Start un Endmarkierungen/Zeilen, so dass man einen Block einzeln identifizieren kann?

Aber das ist wirklich kompliziert. Mit einer einfachen, leicht verständlichen Batch ist das wohl nicht getan.



Habe die Textdatei mal hochgeladen.

Hier ein kleiner Ausschnitt und wie es im endeffekt aussehen soll.

Ausschnitt:

UNA:+,? '
UNB+UNOC:3+109910000+999999999+191101:0955+00349++AO05Q419ke1'
UNH+00001+KOTR:02:001:KV'
IDK+100295017+99+gkv informatik'
VDT+19970403'
FKT+02'
NAM+01+gkv informatik+Fachbereich Inputmanagement'
ANS+1+42285+Wuppertal+Lichtscheiderstraße 89'
ASP+01+0202/69582581+0202/6958202581+Frau Wolf+Datenaustausch'
UEM+1+00+I8'
[email protected]'
DFU+02+016++0000+2400+1+ftam.gkvi.de?:5000'
UNT+000011+00001'
UNH+00002+KOTR:02:001:KV'
IDK+100395611+99+AOK Nordost Region MVP'
VDT+19970401'
FKT+02'
VKG+02+100295017+5++07++01++00'
VKG+02+100295017+5++07++02++00'
VKG+02+100295017+5++07++13++00'
VKG+02+104212516+5++07++05+38+00'
VKG+09+109519016+5++28+6+++00'
VKG+02+108310400+5++07++09++00'
VKG+02+108018007+5++07++08++00'
VKG+02+100696023+5++07++12++00'
VKG+02+101097008+5++07++15++00'
VKG+02+107299005+5++07++14++00'
VKG+03+100395611+5++07++++00'
VKG+01+100395611+5++07++++00'
VKG+02+106198626+5++07++11++00'
VKG+02+106198626+5++07++16++00'
VKG+02+106198626+5++07++06++00'
VKG+02+106198626+5++07++07++00'
VKG+02+103411401+5++07++05+20+00'
VKG+02+106198626+5++07++10++00'
VKG+02+103119199+5++07++04++00'
VKG+02+102110939+5++07++03++00'
NAM+01+AOK Nordost+Region Mecklenburg-Vorpommern'
ANS+1+14467+Potsdam+Behlertstr. 33A'
ANS+3+14456+Potsdam'
UEM+1+00+I8'
[email protected]'
DFU+02+016++0000+2400+1+ftam.gkvi.de?:5000'
UNT+000031+00002'
UNH+00003+KOTR:02:001:KV'
...
...
UNZ+000205+00349'


Endresultat:

IDK+100295017+99+gkv informatik'
NAM+01+gkv informatik+Fachbereich Inputmanagement'

IDK+100395611+99+AOK Nordost Region MVP'
VKG+03+100395611+5++07++++00'
NAM+01+AOK Nordost+Region Mecklenburg-Vorpommern'
...

Im besten Fall so:

IDK gkv informatik
NAM gkv informatik Fachbereich Inputmanagement

IDK AOK Nordost Region MVP
VKG03 00
NAM AOK Nordost Region Mecklenburg-Vorpommern
...

Brauche "nur" IDK, VKG und NAM
Bei den VKGs wäre es am besten mit einer Schleife zu arbeiten, jedoch weiß ich nicht wie ich das hinbekommen soll, da bei VKG erst die Kriterie beachtet werden muss, dass nach VKG die 03 folgt und dann die zahl ganz hinten beachtet werden muss. Dort gilt die Reihenfolge, zuerst nach 41 zu suchen dann nach 40 dann nach 99 und dann nach 00. Wenn keine davon vorhanden ist dann raus aus der schleife und das nächste IDK dann suchen. ich hoffe ich konnte es einigermaßen erklären, was mein Ziel ist.

Ich bin für jeden Tipp dankbar.

Vielen Dank im Voraus.

MfG
Booster123
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0