Dateiinhalt an bestimmer Stelle auslesen und Mailen
Hi Community,
ich muss mal wieder auf euer Wissen zugreifen da ich nicht so recht weiß wie ich das anstellen soll.
Die Ausgangssituation
Ich bekomme auf meinem FTP Server laufend Dateien von einem Partner mit denen wir unsere Lagersoftware füttern. Nun möchte ich die Auftragsnummer an gewisser Stelle auslesen und per E-Mail verschicken. Ebenso möchte ich die Auftragshinweise auslesen, die manchmal (aber nicht immer) bei den Aufträgen mitgesendet werden.
Mit dem E-Mail versenden habe ich keine Probleme, mit mail-as-batch habe ich schon Erfahrung. Wenn diese Infos also in eine temporäre Datei geschrieben werden wäre mir schon geholfen, diese kann ich dann per Mail verschicken. Es geht mir also nur ums Auslesen der Informationen.
Es werden unterschiedliche Satzarten per FTP geschickt, mich interessieren aber nur die Aufträge.
Der Dateiaufbau der Aufträge
An den ersten beiden Stellen jeder Zeile steht immer die Satzart. Die Dateien beginnen IMMER mit Satzart 01 und enden immer mit 98.
Auftragstyp 1
Die für mich in diesem Beispiel wichtigen Informationen sind in der Satzart 24 die Auftragsnummer 0011485690 (von Stelle 16-25) und der Auftragshinweis Anlieferung um 19:00 Uhr (von Stelle 44 bis 143). Der Auftragshinweis kann, aber muss nicht vorkommen. Falls es nicht möglich ist nur die Auftragsnummer und den Auftragshinweis zu kopieren, genügt es mir auch wenn die ganze Zeile kopiert wird.
Dann gibt es noch einen anderen Auftragstyp, wo ich auch die Auftragsnummer auslesen möchte:
Auftragstyp 2
Hier gibt es immer nur Satzart 33 und es ist nur die Auftragsnummer in Stelle 3-9 wichtig (5324684, 5324692, 5324693 usw). Auftragshinweis gibt es hier keinen. Hier gibt es, im Gegensatz zum Auftragstyp 1, mehrere verschiedene Auftragsnummern die ich alle auslesen möchte.
Es werden auch Dateien geschickt, in denen keine Auftragsnummern drin stehen, diese haben dann andere Satzarten wie in den beiden Beispielen oben. Mit denen soll nichts gemacht werden, einfach überspringen.
Ich hoffe ich habe alles verständlich erklärt. Danke schonmal .
ich muss mal wieder auf euer Wissen zugreifen da ich nicht so recht weiß wie ich das anstellen soll.
Die Ausgangssituation
Ich bekomme auf meinem FTP Server laufend Dateien von einem Partner mit denen wir unsere Lagersoftware füttern. Nun möchte ich die Auftragsnummer an gewisser Stelle auslesen und per E-Mail verschicken. Ebenso möchte ich die Auftragshinweise auslesen, die manchmal (aber nicht immer) bei den Aufträgen mitgesendet werden.
Mit dem E-Mail versenden habe ich keine Probleme, mit mail-as-batch habe ich schon Erfahrung. Wenn diese Infos also in eine temporäre Datei geschrieben werden wäre mir schon geholfen, diese kann ich dann per Mail verschicken. Es geht mir also nur ums Auslesen der Informationen.
Es werden unterschiedliche Satzarten per FTP geschickt, mich interessieren aber nur die Aufträge.
Der Dateiaufbau der Aufträge
An den ersten beiden Stellen jeder Zeile steht immer die Satzart. Die Dateien beginnen IMMER mit Satzart 01 und enden immer mit 98.
Auftragstyp 1
01LAGERD 1308060000000000J
23LAGERD 0011485690 00001012533 000091
24LAGERD 0011485690 XXXX Zentrallager - NEU Straße 3, Objekt 2
25LAGERD 0011485690 P000010010Anlieferung um 19:00 Uhr
22LAGERD 0011485690 130809 850 092239
98LAGERD 13080600000000000000000006
Die für mich in diesem Beispiel wichtigen Informationen sind in der Satzart 24 die Auftragsnummer 0011485690 (von Stelle 16-25) und der Auftragshinweis Anlieferung um 19:00 Uhr (von Stelle 44 bis 143). Der Auftragshinweis kann, aber muss nicht vorkommen. Falls es nicht möglich ist nur die Auftragsnummer und den Auftragshinweis zu kopieren, genügt es mir auch wenn die ganze Zeile kopiert wird.
Dann gibt es noch einen anderen Auftragstyp, wo ich auch die Auftragsnummer auslesen möchte:
Auftragstyp 2
01LAGERD 1308050000000000J
335324684 00142090 1307500002 00000360000VL Verlesung 20130806VTD
335324692 00142090 1307500002 00000060000VL Verlesung 20130806VTD
335324693 00142091 1307500003 00000070000VL Verlesung 20130806VTD
335324694 00142091 1307500003 00000070000VL Verlesung 20130806VTD
335324695 00142091 1307500003 00000070000VL Verlesung 20130806VTD
335325676 00142392 1304513410 00000070000RA Rampe 20130806VTD
335325677 00142392 1304513410 00000070000RA Rampe 20130806VTD
335326799 00132331 1308500002 00000002500VL Verlesung 20130806VTD
335327197 00138403 1306513521 00000075000M3 SM 3. Stock 20130806VTD
335327198 00138403 1306513521 00000075000M3 SM 3. Stock 20130806VTD
335327199 00138403 1306513521 00000075000M3 SM 3. Stock 20130806VTD
335327316 00138667 1308500002 00000030000VL Verlesung 20130806VTD
98LAGERD 13080500000000000000000014
Hier gibt es immer nur Satzart 33 und es ist nur die Auftragsnummer in Stelle 3-9 wichtig (5324684, 5324692, 5324693 usw). Auftragshinweis gibt es hier keinen. Hier gibt es, im Gegensatz zum Auftragstyp 1, mehrere verschiedene Auftragsnummern die ich alle auslesen möchte.
Es werden auch Dateien geschickt, in denen keine Auftragsnummern drin stehen, diese haben dann andere Satzarten wie in den beiden Beispielen oben. Mit denen soll nichts gemacht werden, einfach überspringen.
Ich hoffe ich habe alles verständlich erklärt. Danke schonmal .
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 213586
Url: https://administrator.de/forum/dateiinhalt-an-bestimmer-stelle-auslesen-und-mailen-213586.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
9 Kommentare
Neuester Kommentar
Hallo B-Real,
da sollte dir mein Tool "BatchRex" helfen.
Ein Regular-Expressions Pattern für Auftragstyp 1 wäre folgende:
und für den Hinweis:
Auftragstyp 2:
Beispiel mit BatchRex:
das ganze dann mit einer Schleife für die Dateien (ungetestet):
Hoffe das hilft dir weiter
Grüße Uwe
da sollte dir mein Tool "BatchRex" helfen.
Ein Regular-Expressions Pattern für Auftragstyp 1 wäre folgende:
24\w+\s+(\d+)[^\n]*
25\w+\s+\d+\s+([^\n]*)
33(\d{7})
batchrex.exe /file:"C:\auftrag1.txt" /pattern:"33(\d{7})" >Auftragsnummern.txt
das ganze dann mit einer Schleife für die Dateien (ungetestet):
@echo off & setlocal ENABLEDELAYEDEXPANSION
set output=Auftragsnummern.txt
for %%a IN (*.txt) DO @(
batchrex.exe /file:"%%a" /pattern:"24\w+\s+(\d+)[^\n]*" >nul
If "!errorlevel!" == "0" (
batchrex.exe /file:"%%a" /pattern:"24\w+\s+(\d+)[^\n]*" >>!output!
)
batchrex.exe /file:"%%a" /pattern:"25\w+\s+\d+\s+([^\n]*)" >nul
If "!errorlevel!" == "0" (
batchrex.exe /file:"%%a" /pattern:"25\w+\s+\d+\s+([^\n]*)" >>!output!
)
batchrex.exe /file:"%%a" /pattern:"33(\d{7})" >nul
If "!errorlevel!" == "0" (
batchrex.exe /file:"%%a" /pattern:"33(\d{7})" >>!output!
)
)
Grüße Uwe