Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Text an spezieller Stelle suchen

Frage Entwicklung Batch & Shell

Mitglied: EckerleADM

EckerleADM (Level 1) - Jetzt verbinden

05.03.2009, aktualisiert 16:33 Uhr, 3071 Aufrufe, 4 Kommentare

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
Mitglied: Biber
05.03.2009 um 19:32 Uhr
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:
01.
>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! 
02.
Datei "d:\temp\edi8815.edi" kopieren nach Z:\Ziel\XXXX 
03.
Datei "d:\temp\edi8816.edi" kopieren nach Z:\Ziel\YYYY 
04.
Datei "d:\temp\edi8817.edi" kopieren nach Z:\Ziel\aaaa
Im Batch dann ungefähr:
01.
::---VerteilDieEDIs.cmd --- 
02.
@echo off & SetLocal EnableDelayedExpansion 
03.
Set "sourceDir=D:\Temp" & Set "targetdir=Z:\Ziel" 
04.
FOR /F "delims=: tokens=1,2,4" %%i in ('findstr /n $ "%sourceDir%\*.edi"^|findstr /C:":2:"') do ( 
05.
            set "x=%k"  
06.
           echo MOVE "%i:%j" "%targetDir%\!x:~9,4!" 
07.
)
[Ungetestete Skizze]

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
.... 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
Bitte warten ..
Mitglied: EckerleADM
06.03.2009 um 07:06 Uhr
Hallo Biber,

vielen Dank für Deinen Lösungsansatz.
Ich werde mir das mal so zusammenbauen und probier dann mal mein Glück.
Bitte warten ..
Mitglied: Biber
06.03.2009 um 07:58 Uhr
Moin EckerleADM,
Zitat von EckerleADM:
... und probier dann mal mein Glück.
Na ja...
Glück ist, seine Freude in der Freude des anderen finden.
Georges Bernanos (1888 - 1948), Schriftsteller

Also teile dann bitte Dein Glück mit uns und setze einen grünen Haken.

Schönes Wochenende
Biber
Bitte warten ..
Mitglied: EckerleADM
06.03.2009 um 11:22 Uhr
So, hab jetzt folgende Lösung umgesetzt:

@echo off & SetLocal EnableDelayedExpansion
set "sourceDir=\\Server\\Quelle" & Set "targetDir=\\Server\\Ziel"

set text="51201XXXX000"

FOR /F "tokens=1,2,4 delims= " %%i in ('findstr /M /L "%text%" "%sourceDir%\*.neu"') do (
MOVE "%%i" "%targetDir%\!x:"

Ich konnte leider die Lösung mit der zweiten Zeile nicht umsetzen, bekam immer wieder einen Syntaxerror
(Vieleicht war ich auch etwas zu ungeduldig bei der Probiererei...)

Da die Zeichenfolge "text" nach Rücksprache mit unserem Kunden eindeutig das Werk identifiziert, habe ich diesen Weg gewählt...
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
Dateien mit Liste suchen (16)

Frage von Phippu zum Thema Batch & Shell ...

Batch & Shell
Batsch doppelte Zeile in in Text finden und eine löschen (10)

Frage von GNLen1 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (24)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Netzwerke
Abisolierwerkzeug (11)

Frage von SarekHL zum Thema Netzwerke ...

Hyper-V
Langsames Netzwerk i210 LAN Karte (11)

Frage von Akcent zum Thema Hyper-V ...

Windows Server
Server 2016 - Kuriositäten (8)

Frage von certifiedit.net zum Thema Windows Server ...