Passagen-Extraktion aus einer Textdatei via Batch-CMD
Moin,
ich hänge ein wenig.
Ich habe folgendes Problem.
Ich habe eine Textdatei die 3 Zeilen enthält in folgendem Format :
(0010,0010) PN [nachname, vorname] # 18, 1 text1
(0010,0020) LO [123456] # 6, 1 text2
(0008,1030) LO [Der Text] # 10, 1 text3
Ich würde gerne via CMD-Batch die Inhalte zwischen den eckigen Klammen (nachname, vorname - 123456 - Der Text) in eine externe Textdatei ausleiten.
Die externe Textdatei sollte dann folgenden Inhalt haben :
nachname_vorname
123456
Der Text
Wobei bei dem Namen das Komma durch einen Unterstrich ersetzt werden soll und ein ev. Leerzeichen entfernt werden soll.
findstr arbeitet nur zeilenweise, glaub da komme ich nicht weiter.
Die Daten in den Klammern sind nie die gleichen, also suchen nach (Inhalt in der Klammer) funktioniert nicht, auch die Anzahl der Zeichen zwischen den eckigen Klammern sind nie gleich in der Anzahl.
Später wird aus der Kombination nachname_vorname_123456 ein Verzeichnisordner erstellt in dem dann gezielt weitere Daten abgelegt werden.
Ich danke schonmal für Infos, Feedbacks oder Anschubser ;)
ich hänge ein wenig.
Ich habe folgendes Problem.
Ich habe eine Textdatei die 3 Zeilen enthält in folgendem Format :
(0010,0010) PN [nachname, vorname] # 18, 1 text1
(0010,0020) LO [123456] # 6, 1 text2
(0008,1030) LO [Der Text] # 10, 1 text3
Ich würde gerne via CMD-Batch die Inhalte zwischen den eckigen Klammen (nachname, vorname - 123456 - Der Text) in eine externe Textdatei ausleiten.
Die externe Textdatei sollte dann folgenden Inhalt haben :
nachname_vorname
123456
Der Text
Wobei bei dem Namen das Komma durch einen Unterstrich ersetzt werden soll und ein ev. Leerzeichen entfernt werden soll.
findstr arbeitet nur zeilenweise, glaub da komme ich nicht weiter.
Die Daten in den Klammern sind nie die gleichen, also suchen nach (Inhalt in der Klammer) funktioniert nicht, auch die Anzahl der Zeichen zwischen den eckigen Klammern sind nie gleich in der Anzahl.
Später wird aus der Kombination nachname_vorname_123456 ein Verzeichnisordner erstellt in dem dann gezielt weitere Daten abgelegt werden.
Ich danke schonmal für Infos, Feedbacks oder Anschubser ;)
Please also mark the comments that contributed to the solution of the article
Content-ID: 1602143423
Url: https://administrator.de/forum/passagen-extraktion-aus-einer-textdatei-via-batch-cmd-1602143423.html
Printed on: January 18, 2025 at 13:01 o'clock
6 Comments
Latest comment
Wieso heutzutage noch Batch?
Besser gleich die Powershell mit Regex-Power nehmen ...
bzw. alternativ mit Select-String
@echo off
>"D:\datei_neu.txt" (for /f "usebackq tokens=2 delims=" %%a in ("D:\datei.txt") do (
set "txt=%%a"
set "txt=!txt:, =_!"
echo.!txt!
))
Get-Content "D:\datei.txt" | %{($_ -split '[\[\]]')[1] -replace ',\s*','_'} | set-content "D:\datei_neu.txt"
Select-String "D:\datei.txt" -Pattern '\[(.*)\]' | %{$_.Matches.Groups[1].Value -replace ',\s*','_'} | Set-Content "D:\datei_neu.txt"
Später wird aus der Kombination nachname_vorname_123456 ein Verzeichnisordner erstellt in dem dann gezielt weitere Daten abgelegt werden.
Wozu das ganze dann noch extra in eine weitere Textdatei schreiben?? Lässt sich doch direkt ohne so einen Zwischenschritt weiterverwenden, sowas hat man vielleicht 1980 gemacht aber heutzutage ehrlich gesagt Blödsinn.
Einfach "joinen"
(Get-Content "daten.dat" | %{($_ -split '[\[\]]')[1] -replace ',\s*','_'}) -join '_' | set-content "daten_neu.dat"