Top-Themen

Aktuelle Themen (A bis Z)

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 Batch WinXP - jeweils 3 Bestimmte Zeilen aus mehreren Textdateien in neue Datei (die 3 Zeilen hintereinander dann als Einzeiler)

Mitglied: Experiment626

Experiment626 (Level 1) - Jetzt verbinden

01.02.2014 um 16:23 Uhr, 2424 Aufrufe, 2 Kommentare, 1 Danke

Hallo Ihr Fachleute,

ich krieg's nicht hin, FOR ist für mich nur noch verwirrrend, kenne mich mit den Detaills nicht aus.

Ich möchte eine Log-Datei erstellen.
Diese soll entstehen aus Inhalten bestimmter Textdateien, die alle im gleichen Verzeichnis liegen, z.B. "D:\HL7\" und dem Muster "Bef*.txt" entsprechen.
Die Textdateien beinhalten unter anderem die u. a., immer gleiche Struktur, um deren Daten es geht.
Die genannten Feldanfänge OBX|4|TX||| bis OBX|7|TX||| sind entsprechend in jeder Textdatei vorhanden.
Die | ist ein Separator, z.B. ||| = 3 Separatoren ohne dazwischenliegende Daten.

OBX|4|TX|||A-Nr: 7503387431 Name: Aaa, Bbbbbb geb. am: 01.01.1950||||||F|||20140131|||
OBX|5|TX|||Materialeingang: 30.01.2014||||||F|||20140131|||
OBX|6|TX|||Berichtsausgang: 31.01.2014||||||F|||20140131|||
OBX|7|TX|||Berichtsnummer: E 14361/13||||||F|||20140131|||

Sollte irgendwann der Header erweitert werden, wäre es möglich, das die Zeilen sich ändern könnten,
d. h. z. B. OBX|4|TX|||A-Nr. ..... etc. beginnt dann erst a OBX|8|TX||| o. ä., so dass man sich hier vielleicht
besser auf die Begriffe stützen sollte, wie A-Nr, geb. am:, Materialeingang etc. So wäre ein evtl. späteres Zeilenverschieben durch Header-Veränderung unerheblich.

Die erzeugte Zieldatei (z. B. Liste.log) sollte dann folgenden Inhalt zeigen:.

E 14361/13 EIN30.01.2014 AUS31.01.2014 A-Nr: 7503387431 Name: Aaa, Bbbbbb, geb. am: 01.01.1950

Ich bin euch für eure Hilfe sehr dankbar.

Stitch
Mitglied: bastla
01.02.2014, aktualisiert um 17:40 Uhr
Hallo Experiment626!

Das könnte (weitgehend ungetestet) etwa so gehen:
01.
@echo off & setlocal
02.
set "Ordner=D:\HL7"
03.
set "Dateien=Bef*.txt"
04.

05.
set "Liste=D:\Liste.log"
06.

07.
set "Feld1=Berichtsnummer;"
08.
set "Feld2=Materialeingang;EIN"
09.
set "Feld3=Berichtsausgang;AUS"
10.
set "Feld4=A-Nr;A-Nr: "
11.

12.
del "%Liste%" 2>nul
13.
pushd "%Ordner%"
14.
for /f "delims=" %%i in ('dir /b/a-d "%Dateien%"') do call :ProcessFile "%%i"
15.
popd
16.
goto :eof
17.

18.
:ProcessFile
19.
set "Satz="
20.
for /f "tokens=1-3 delims=;=" %%e in ('set Feld') do call :ProcessField %1 "%%f" "%%g"
21.
setlocal enabledelayedexpansion
22.
>>"%Liste%" echo !Satz:~1!
23.
endlocal
24.
goto :eof
25.

26.
:ProcessField
27.
for /f "delims=" %%a in ('findstr /lc:"%~2: " %1') do set "Zeile=%%a"
28.
call set "Daten=%%Zeile:*%Feld%: =%%"
29.
for /f "delims=|" %%a in ("%Daten%") do set "Satz=%Satz% %~3%%a"
30.
goto :eof
Geschwindigkeitsrekorde lassen sich damit aber sicher nicht aufstellen ...

Kurz zur Erklärung der Variablen %Feld1% bis %Feld4% (andere Variablen, deren Namen mit "Feld" beginnen, darf es übrigens in diesem Batch nicht geben): Diese enthalten den Suchbegriff und (nach dem Semikolon) den Text, der vor dem jeweiligen Feld ausgegeben werden soll (also zB "EIN" vor dem Wert von "Materialeingang").
Zu
FOR ist für mich nur noch verwirrrend, kenne mich mit den Detaills nicht aus.
könnte ich das einschlägige "Tutorial zur FOR-Schleife" von @Friemler empfehlen.

Grüße
bastla
Bitte warten ..
Mitglied: Experiment626
01.02.2014 um 22:23 Uhr
Alle Achtung bastla, ich staune nur ...
vielen lieben Dank, es funktioniert wunderbar, genauso sollte es sein.

Danke für die Empfehlung und solch schneller Hilfe,
und das auch noch am Wochenende.

.... sehr empfehlenswert !!!

Gruss Stitch.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch datei eine bestimmt Datei mit einer bestimmten software öffnen

gelöst Frage von Daoudi1973Batch & Shell3 Kommentare

Hallo zusammen, wir haben in der Arbeit Acrbat Reader als Standard Software um PDF-Dateien zu öffnen. meine Frage: wie ...

Batch & Shell

Batch Textdatei Spaltenweise auslesen

Frage von PinkFLuffyUnicornBatch & Shell7 Kommentare

hi, ist es irgendwie möglich anstatt eine Textdatei via Batch Spaltenweise auszulesen und nicht zeilenweise wie das normal ganz ...

Batch & Shell

Batch-Datei zum auslesen eines Speicherpfades aus einer Textdatei

Frage von PatrickS1990Batch & Shell12 Kommentare

Hallo, ich bin neu hier und benötige eure Hilfe. Ich programmiere sonst hauptsächlich in Python. Ich speichere einige Dateipfade ...

Batch & Shell

Batch: Textdatei Zeilenweise auslesen

gelöst Frage von CreatorXBatch & Shell2 Kommentare

Hallo, ich weiß, zu dem Thema gibt es schon unzählige Threads. Ich hab auch einiges dazu gefunden und trotzdem ...

Neue Wissensbeiträge
Windows 10

"Windows 10 Pro V1903: Gruppenrichtlinie "Telemetrie zulassen" aktivierbar?"

Tipp von Snowbird vor 3 StundenWindows 101 Kommentar

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 1 TagSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 2 TagenHyper-V7 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 3 TagenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Heiß diskutierte Inhalte
Server
Ein Server ins Haus stellen. Was brauche ich dafür?
Frage von JoschiTomServer13 Kommentare

Hallo Community, ich spiele mit dem Gedanken eine Server mir zu holen. Was brauche ich dafür? Und wie sind ...

Windows Server
Ist es möglich, eine deutsche W2016 Installation mit einer UK-Lizenz zu aktivieren?
gelöst Frage von keine-ahnungWindows Server10 Kommentare

Moin at all, ist ja noch Freitag. Ich habe hier noch zwei UK OEM W2016 Standard Pakete rumfliegen Muss ...

Batch & Shell
Mittels SED Text ersetzen in Anführungszeichen
gelöst Frage von nekronBatch & Shell9 Kommentare

Moin … bin nicht wirklich der SED/regex Mensch, vielleicht kann mir jemand auf die Schnelle Helfen :) ich habe ...

LAN, WAN, Wireless
Mikrotik Gast-Wlan keine Verbindung zum Internet?
Frage von dirkschwarzLAN, WAN, Wireless8 Kommentare

Guten Morgen, habe ein wahrscheinlich einfaches Problem, bei dem ich aber nicht wirklich weiter komme Ich möchte ein Gast-Wlan ...