thomaskern
Goto Top

EDI Dateien auf Inhalt prüfen und verschieben

Hallo zusammen,

ich habe gerade eine Aufgabe zu bewältigen bei welcher ich seit mehreren Tagen nicht weiterkomme. Evtl. hat ja jemand sowas schon mal gelöst.
Wir bekommen von einem Kunden täglich zu unterschiedlichen Zeiten per AS2 EDI Bestellungen (ORDERS) und Lagerbestandsberichte (INVRPT) übermittelt. Nach Erhalt befinden sich die .edi Dateien in einem Verzeichnis auf unserm EDI-Server.
Jetzt zum eigentlich Problem: Der Dateiname ist einfach eine fortlaufende Nummer sprich ich kann am Dateinamen nicht erkennen ob gerade eine Bestellung (ORDERS) oder ein Lagerbestandsbericht (INVRPT) angekommen ist. Wenn man die Datei mit einem Editor öffnet kann man am relativ schnell erkennen welcher TYP es ist. Für Bestandsberichte steht „UNH+2280+INVRPT“ und für Bestellungen „++ORDERS+++EANCOM“! Jetzt müssen aber beide Dateien von unterschiedlichen Systemen automatisch weiterverarbeitet werden. Ich muss es schaffen das Bestellungen nach erhalt automatisch nach z.B. C:/ORDERS und Bestandsberichte nach c:/ INVRPT verschoben / kopiert werden.
Unsere AS2 Software kann leider nicht auf Dateiinhalt unterscheiden… Derzeit öffne ich jede neue EDI Datei mit einem Editor prüfe ob es eine Order oder ein Bericht ist und verschiebe diese dann manuell.

Ich würde diesen Vorrang wirklich sehr sehr gerne automatisieren. Kennt wer eine Software welche sowas kann?
Vorab schon mal vielen Danke für eure Hilfe.

Tom

Content-ID: 319013

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

pablovic
pablovic 25.10.2016 um 11:11:27 Uhr
Goto Top
Hey Tomi
Was spricht gegen ein Skript, welches die Datei einliest und nach den Begriffen sortiert, sind doch normale Text-Dateien?
ps. imho sollte die EDI Software schon prüfen können was da daher kommt.

Gruss
Pab
Pjordorf
Pjordorf 25.10.2016 um 11:12:37 Uhr
Goto Top
Hallo,

Zitat von @ThomasKern:
EDI-Server.
Seeburger?

Gruß,
Peter
131301
131301 25.10.2016 aktualisiert um 11:17:08 Uhr
Goto Top
Lässt sich mit Powershell schnell erledigen
$ordner = "c:\Data"  
$ziel = "c:\Ziel"  
gci $ordner | group {[regex]::match((gc $_.Fullname | out-string),'ORDERS|INVRPT').Value} | %{  
$target = "$ziel\$($_.Name)"  
If (!(Test-Path $target)){md $target -Force | out-null}
$_.Group | move-Item -Destination $target -Force
}
Gruß
em-pie
em-pie 25.10.2016 aktualisiert um 11:18:24 Uhr
Goto Top
Moin,

du könntest das hiermit (VBS) lösen:
https://blogs.technet.microsoft.com/heyscriptingguy/2004/10/11/how-can-i ...

In dem hier erwähnten Script wird geprüft, ob sich im Verzeichnis X neue Dateien befinden. Ist das der Fall, wird zunächst der Name der Datei angezeigt.
Anstelle des Echo-Befehls könntest du aber ein Handle auf die Datei legen:
  • Datei öffnen
  • Zeile/ Stelle auslesen, welche für dich relevant ist
  • je nach gefundenem Kriterium die Datei verschieben

Weitere Hilfe hier:
https://blogs.technet.microsoft.com/heyscriptingguy/2007/03/29/how-can-i ...
https://msdn.microsoft.com/de-de/library/2wcf3ba6(v=vs.84).aspx
https://msdn.microsoft.com/de-de/library/752y8abs.aspx

Möglich, dass es noch eine kürzere PoerShell-Variante gäbe, aber da bin ich raus...
€dit: zu langsam :D

Gruß
em-pie
SlainteMhath
SlainteMhath 25.10.2016 aktualisiert um 11:19:26 Uhr
Goto Top
Moin,

 FORFILES /p <pfad> /c "cmd findstr /I 'eancom' && copy @file c:\orders"  

Ohne Gewähr face-smile

lg,
Slainte

EDIT: auch zu langsam, dafür ein Einzeiler :P
ThomasKern
ThomasKern 25.10.2016 um 12:36:43 Uhr
Goto Top
Ihr seid einfach super! Das Script von Sollbruchstelle funktioniert einwandfrei!

Danke schön an alle!