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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110645
Url: https://administrator.de/forum/text-an-spezieller-stelle-suchen-110645.html
Ausgedruckt am: 30.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar
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