Bestimmte Teile einer TXT Datei per Batch in eine neue CSV speichern
Hallo zusammen,
ich bekomme von einem externen Dienstleister in unregelmäßigen Abständen TXT Files mit verschiedenen Werten. Diese sind immer mit einem Semikolon getrennt.
Diese TXT Dateien kopiere ich mir bereits mit einem Programm automatisch in ein weiteres Verzeichnis, damit ich mit diesen arbeiten kann.
Jetzt muss ich aus diesen TXT Files jeweils den 5. und 7. Eintrag heraus filtern und in eine CSV Datei mit beliebigem Namen auf einem weitern Verzeichnis abspeichern.
Diese Daten benötige ich, damit ich diese in ein weiteres Programm importieren kann.
Inhalt einer Beispiel TXT:
E921;E904;0170131785;10;0000539789;;EL-X-5950/EL-F-2212;Remarks;Seals : 1262176 t/m 1262180 + 1262950;;20170627;06:43;20170627;08:01;15000;24900;1859
In diesem Beispiel soll also folgendes heraus geflitert werden:
Eintrag 5: 0000539789
Eintrag 7: EL-X-5950/EL-F-2212
Die CSV soll bspw. so am Ende aussehen:
|0000539789|;|EL-X-5950/EL-F-2212|
Kann mir jemand behilflich sein, wie ich dies bspw. über ein Batch Script realisiert bekomme, welches nach dem oben genannten Kopiervorgang der TXT ausgeführt wird?
ich bekomme von einem externen Dienstleister in unregelmäßigen Abständen TXT Files mit verschiedenen Werten. Diese sind immer mit einem Semikolon getrennt.
Diese TXT Dateien kopiere ich mir bereits mit einem Programm automatisch in ein weiteres Verzeichnis, damit ich mit diesen arbeiten kann.
Jetzt muss ich aus diesen TXT Files jeweils den 5. und 7. Eintrag heraus filtern und in eine CSV Datei mit beliebigem Namen auf einem weitern Verzeichnis abspeichern.
Diese Daten benötige ich, damit ich diese in ein weiteres Programm importieren kann.
Inhalt einer Beispiel TXT:
E921;E904;0170131785;10;0000539789;;EL-X-5950/EL-F-2212;Remarks;Seals : 1262176 t/m 1262180 + 1262950;;20170627;06:43;20170627;08:01;15000;24900;1859
In diesem Beispiel soll also folgendes heraus geflitert werden:
Eintrag 5: 0000539789
Eintrag 7: EL-X-5950/EL-F-2212
Die CSV soll bspw. so am Ende aussehen:
|0000539789|;|EL-X-5950/EL-F-2212|
Kann mir jemand behilflich sein, wie ich dies bspw. über ein Batch Script realisiert bekomme, welches nach dem oben genannten Kopiervorgang der TXT ausgeführt wird?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 341737
Url: https://administrator.de/forum/bestimmte-teile-einer-txt-datei-per-batch-in-eine-neue-csv-speichern-341737.html
Ausgedruckt am: 29.04.2025 um 00:04 Uhr
8 Kommentare
Neuester Kommentar

Nimm besser gleich PowerShell
Gruß
$data = @((gc 'c:\daten.txt')).split(";")
"|$($data[4])|;|$($data[6])|" | sc 'c:\fertig.csv'

Kein Wunder wenn du das in einer Zeile in die Shell pastest
.
Das gehört in zwei Zeilen, oder beide Zeilen mit ; in einer Zeile zusammenfassen! Btw. fehlt dir zusätzlich ein Hochkomma, geht einwandfrei, it's your fault.
Das gehört in zwei Zeilen, oder beide Zeilen mit ; in einer Zeile zusammenfassen! Btw. fehlt dir zusätzlich ein Hochkomma, geht einwandfrei, it's your fault.

vielleicht hast du auch eine Idee, wie ich das generisch für alle Files machen kann, welche sich zum Ausführ Zeitpunkt in dem Verzeichnis befinden und nicht nur für eine bestimmte TXT?
Klar, einfach mit Get-ChildItem alle Textdateien holen und dann mit Foreach-Schleife verarbeiten, fertig.gci 'd:\quelle\*.txt' | ?{!$_.PSIsContainer} | %{
$data = @((gc $_.Fullname)).split(";")
"|$($data[4])|;|$($data[6])|" | sc "d:\ziel\$($_.Basename).csv"
del $_.Fullname -Force
}

Dann hast du noch das alte PS 2.0, hab's oben für dich korrigiert.

Dann bitte noch Wie kann ich einen Beitrag als gelöst markieren? nicht vergessen.