PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmten Text aus Textdatei extrahieren



FFW Pietling 2
22.01.2006, 21:10
Servus!

Jetzt sind Batch-Kenntnisse gefragt. Ich suche eine Befehlsabfolge, mit der ich einen Text, z.B. zwischen zwei Schlüsselwörter, aus einer Textdatei extrahieren oder als Umgebungsvariable speichern kann.

Also folgendermaßen:

(Inhalt Text.txt)

Heute ist ein schöner Tag schlüsselwort1 Dies ist der Text, der extrahiert werden soll schlüsselwort1´schlüsselwort2 Dieser Text soll auch extrahiert werden schlüsselwort2´

Eine "einfachere" Alternative wäre, den Text ab einem bestimmten Schlüsselwort zu extrahieren und das immer wieder, bis der Text vollständig getrennt ist

(Inhalt Text2.txt)

Heute ist ein schöner Tag schlüsselwort1 [(Dies ist der Text, der extrahiert werden soll )schlüsselwort2 (Dieser Text hier wird beim ersten Mal mit extrahiert)]

[] Erster Vorgang
()Zweiter Vorgang

Tobias
23.01.2006, 07:32
Hallo,

also nochmal zum mitschreiben: Eine Batch-Datei soll ausgeführt werden, aber je nach einem bestimmten Parameter sollen unterschiedliche Dinge gemacht werden. Die Batch-Datei muss technisch bedingt aber immer die gleiche sein?

Du kannst in Batch-Files mit IF-Abfragen arbeiten und solltest damit - ohne jetzt tiefgehener mit dem Thema bewandert zu sein - hinkommen.

Ich hatte früher (bevor es Win95 gab ;-)) immer im DOS ein Menü, bei dem ich mit IF-Abfragen in einer Batch-Datei Programme aufrufen konnte.

Schau mal hier (http://mitglied.lycos.de/thebadrat/main.php?temp=batchen&tit=Batch), da insbesondere mal die Punkte 7 und 8 durchlesen. Sonst nochmal bei Google nach batch, if (und ggf. auch errorlevel) suchen.

Ansonsten gibts hier vielleicht noch den ein oder anderen Experten, die vielleicht ein konkretes Beispiel in der Schublade haben.

FFW Pietling 2
23.01.2006, 14:20
Ja so ungefähr mein ich das. Es geht aber weniger um die IF-Abfragen, als darum, wie ich einen Text ab einem bestimmten Wort herauskopieren kann.

Etwa so, wie wenn ich manuell mit der Maus ab jetzt markiere, in die Zwischenablage kopiere und dann in einer neuen Text datei einfüge.

Neue Textdatei: ab jetzt markiere, in die Zwischenablage kopiere und dann in einer neuen Text datei einfüge.

felix000
23.01.2006, 15:55
Um auf einen bestimmten Text in einer Textdatei zu reagieren, kann man hervorragend den Befehl 'find' benutzen.

Eine hilfereiche Hilfe (*g*) bietet auch DOS:

help [Befehl]

also z.B. helf find
in einer DOS-Konsole eingeben.

FFW Pietling 2
23.01.2006, 17:36
Das Problem dabei ist, dass die zu behandelnde Textstelle jedesmal anders ist und nur durch ein (z.B. vorangestelltes) Schlüsselwort gekennzeichnet ist.

MfG Christoph

felix000
23.01.2006, 17:42
Gib doch bitte mal ein konkretes Beispiel...

'find' gibt jeweils die ganze Zeile aus, dann musst du nur doch das nachgestellte Wort extrahieren.

Nairolf22
23.01.2006, 21:21
Wenn ich mich mal einmischen darf. ich versteht das so, dass pietling will:

Alarmmeldung: 012345 chir. Notfall o.A. Nord Musterstraße 22 gebr. bein

Dann sollen jedenfalls bei mir die ersten 6 zeichen gelöscht werden, weil ich die einsatznummer nicht brache. also wird der teil nach "012345" kopiert und ist dann nur noch:

chir. Notfall o.A. Nord Musterstraße 22 gebr. bein

Dann soll der das Einsatzstichwort rausfiltern. Wenn der ein Einsatzstichwort aus einer Liste findet, dann ist eine Variable z.B. Einsatzs:=chir. Notfall o.A.
Dann soll nach dem Einsatzstichwort kopiert werden. Also bleibt noch übrig:

Nord Musterstraße 22 gebr. bein

Dann sucht das programm nach dem Stadtviertel - in diesem Fall nord. Also Variable Stadtviertel:=Nord

Dann bleibt nur noch

Musterstraße 22 gebr. bein

und da kann der evtl. noch die straße rausfiltern...

dann bleibt noch die nummer und die weitere beschreibung...


So versteh ich das... Und wenn man dann alles noch dazu bringen könnte die herausgefilterten variablen automatisch bei map24 einzutragen wär das natürlich super...

FFW Pietling 2
23.01.2006, 22:46
Ja so ungefähr mein ich das. Es geht um eine (manuelle) Fernauslösung von SMS. Ein spezielles Programm überprüft den Server auf E-Mails und speichert sie in eine Datei. Nun sollen diese Personen, welche durch eine E-Mail eine SMS fernauslösen wollen, die E-Mail in einer bestimmten Form verfassen.

Also etwa so:

Feuerwehr: FFW ABCDEFG
Passwort: Gänseblümchen
Adressaten: Name 1, Name 2, Name 3, .....
SMS-Text: !!!Benachrichtigung!!! {datumlang} {zeitkurz} Arbeitseinsatz! Bitte unverzüglich zum Feuerwehrgerätehaus kommen

Dannn muss ich diese Daten ja irgendwie trennen und z.B. dann den SMS-Text in die Datei IBSS.txt kopieren zum späteren Versand.
Die Feuerwehr muss als Variable gespeichert werden, um später mittels einer Kontostandsfunktion die SMS-Kosten abzubuchen.
Das Passwort muss z.B. mit der Datei Passwort_ABCDEFG.pwd verglichen werden.
Die Adressaten müssen jeweils als Variable gespeichert werden.


MfG Christoph

FFW Pietling 2
30.01.2006, 20:42
No idea?

felix000
30.01.2006, 21:30
Jeweils mit einem find-Befehl nach Feuerwehr, Passwort, Adressaten, SMS-Text suchen. Dieser Befehl gibt dir jeweils die ganze Zeile aus. Jetzt kannst du mit einer FOR-Schleife die Zeile zerlegen und mit IF-Schleifen die Eintragungen überprüfen...

Viel Spass!

Nairolf22
31.01.2006, 16:20
hmm wenn das jmd. fertig hat, dann kanner sich ja mal melden...

ich bin dafür zu unerfahren

felix000
31.01.2006, 16:31
Naja, die Methode ist zu Fehler anfällig. Ich würde es mit einem PHP-Script machen, allerdings bin ich PHP gar nicht gut und es müsste mir jemand sagen, wie ich eine Batchdatei mit Parametern auf dem Server auslösen könnte. Dann muss man aber Apache mit PHP auf dem Server laufen lassen...

FFW Pietling 2
01.02.2006, 19:50
Jeweils mit einem find-Befehl nach Feuerwehr, Passwort, Adressaten, SMS-Text suchen. Dieser Befehl gibt dir jeweils die ganze Zeile aus. Jetzt kannst du mit einer FOR-Schleife die Zeile zerlegen und mit IF-Schleifen die Eintragungen überprüfen...

Viel Spass!

Das mit der Zeile ausgeben, hab ich hinbekommen, jedoch weiß ich nicht, wie ich per For-Befehl mit der Zeile was "anfangen" kann. Kannst du mir helfen?

Ich find sowas auf jeden Fall besser wie vorgefertigte Batch-Dateien, weil man ja ewig viele verschiedene Batches bräuchte, also z.B. Übung? - Einsatz?, Morgen? - Heute? - Übermorgen?, Alle? - Gruppen? - Jugend?

Und so bin ich in Sachen Text und Adressaten variabel...

Aber warum findest du das zu fehleranfällig?


MfG Christoph

felix000
01.02.2006, 20:09
In einem HTML-Formular kannst du die Einstellungen aus einem Menü auswählen und in der E-Mail kann man sich ja leicht mal verschreiben oder die Form nicht einhalten...

FOR /F "usebackq tokens=1,2 delims=# eol=-" %%a IN (`find "alarm" test.txt`) DO ...

felix000
01.02.2006, 20:16
Mir is gerade noch eine Idee gekommen, man könnte die Daten auch von einem PHP-Script in eine Textdatei schreiben lassen und diese runterladen lassen und dann prüfen ob eine Alarierung geschickt werden soll. Auf jeden Fall kannst du in einem Formular die Eingaben beschränken und dann in ein festes Format schreiben lassen...

FFW Pietling 2
01.02.2006, 21:15
Mir is gerade noch eine Idee gekommen, man könnte die Daten auch von einem PHP-Script in eine Textdatei schreiben lassen und diese runterladen lassen und dann prüfen ob eine Alarierung geschickt werden soll. Auf jeden Fall kannst du in einem Formular die Eingaben beschränken und dann in ein festes Format schreiben lassen...

Die Idee eines HTML-Formulars hatte ich auch schon. Vor allem wäre das leichter als dauernd eine E-Mail in einer strikten Form erstellen zu müssen. Und dann die Textdatei mit FOR-Befehl zerlegen...

Von PHP hab ich leider absolut keine Ahnung, aber man könnte es doch zuerst mit einem einfachen HTML-Formular versuchen?!

EDIT: PHP wäre natürlich eine ganz feine Sache, aber wie gesagt, da kenn ich mich (noch) so gut wie gar nicht aus.

felix000
01.02.2006, 21:43
Also ich hab mir des vorhin mal kurz angeschaut und eingentlich scho eine Lösung gefunden...

Du brauchst einen kleinen Webspace der PHP unterstützt, da man (besser geasgt ich) nur mit PHP eine Datei schreiben lassen kann.

Also Format hab ich mir sowas vorgestellt:

Gruppe|Text|...

Dann zerlegst des mit einer FOR-Schleife in der Batchdatei und lässt die SMS schicken.