Text an spezieller Stelle suchen
Hallo,
habe hier folgende Problemstellung zu bewältigen:
Es kommen täglich EDI Daten in ein Verzeichnis (Dateiname variiert (laufende Nummer)).
Dort finde ich immer in der zweiten Zeile an der Position 22 - 25 eine spezielle Nr, mit welcher ich das Werk des Kunden identifizieren kann (XXXX).
511 ...........
512 51201XXXX
513
......
Ich möchte die Datei (wenn möglich per Batch) in ein spezielles Verzeichnis verschieben, wenn ein spezieller Wert an dieser Stelle steht.
Vielen Dank für Eure Hilfe
habe hier folgende Problemstellung zu bewältigen:
Es kommen täglich EDI Daten in ein Verzeichnis (Dateiname variiert (laufende Nummer)).
Dort finde ich immer in der zweiten Zeile an der Position 22 - 25 eine spezielle Nr, mit welcher ich das Werk des Kunden identifizieren kann (XXXX).
511 ...........
512 51201XXXX
513
......
Ich möchte die Datei (wenn möglich per Batch) in ein spezielles Verzeichnis verschieben, wenn ein spezieller Wert an dieser Stelle steht.
Vielen Dank für Eure Hilfe
Please also mark the comments that contributed to the solution of the article
Content-Key: 110645
Url: https://administrator.de/contentid/110645
Printed on: April 25, 2024 at 12:04 o'clock
4 Comments
Latest comment
Moin EckerleADM,
willkommen im Forum.
Ich habe mir mal 3 Dateichen nach Deinem Muster und unter der Endung *.edi angelegt und komme mit folgendem Oneliner zum Ziel (oder zumindest zu einem Lösungsweg) am CMD-Prompt:
Im Batch dann ungefähr:
[Ungetestete Skizze]
Erläuterung:
Ein proof-of-concept bzw. der erste Schritt ist das Rausflöhen der zweiten Zeilen je Datei:
durch Durchsuchen aller *.edi-Dateien nach "$" (=Zeilenende) -->liefert alle Zeilen.
Aber wir wollen nur die Zeile 2--> deshalb das Ergebnis nach ":2:" filtern.
Diese Strings danach mit FOR /F durchnudeln.
Grüße
Biber
willkommen im Forum.
Ich habe mir mal 3 Dateichen nach Deinem Muster und unter der Endung *.edi angelegt und komme mit folgendem Oneliner zum Ziel (oder zumindest zu einem Lösungsweg) am CMD-Prompt:
>for /f "delims=: tokens=1,2,4" %i in ('findstr /n $ d:\temp\*.edi^|findstr /C:":2:"') do @set "x=%k" & @echo Datei "%i:%j" kopieren nach Z:\Ziel\!x:~9,4!
Datei "d:\temp\edi8815.edi" kopieren nach Z:\Ziel\XXXX
Datei "d:\temp\edi8816.edi" kopieren nach Z:\Ziel\YYYY
Datei "d:\temp\edi8817.edi" kopieren nach Z:\Ziel\aaaa
Im Batch dann ungefähr:
::---VerteilDieEDIs.cmd ---
@echo off & SetLocal EnableDelayedExpansion
Set "sourceDir=D:\Temp" & Set "targetdir=Z:\Ziel"
FOR /F "delims=: tokens=1,2,4" %%i in ('findstr /n $ "%sourceDir%\*.edi"^|findstr /C:":2:"') do (
set "x=%k"
echo MOVE "%i:%j" "%targetDir%\!x:~9,4!"
)
Erläuterung:
Ein proof-of-concept bzw. der erste Schritt ist das Rausflöhen der zweiten Zeilen je Datei:
>findstr /n $ d:\temp\*.edi|findstr /C:":2:"
d:\temp\edi8815.edi:2:512 51201XXXX
d:\temp\edi8816.edi:2:512 51201YYYY
d:\temp\edi8817.edi:2:512 51201aaaa
Aber wir wollen nur die Zeile 2--> deshalb das Ergebnis nach ":2:" filtern.
Diese Strings danach mit FOR /F durchnudeln.
Grüße
Biber
Moin EckerleADM,
Na ja...
Also teile dann bitte Dein Glück mit uns und setze einen grünen Haken.
Schönes Wochenende
Biber
Na ja...
Glück ist, seine Freude in der Freude des anderen finden.
Georges Bernanos (1888 - 1948), SchriftstellerAlso teile dann bitte Dein Glück mit uns und setze einen grünen Haken.
Schönes Wochenende
Biber