Textdatei: Datensätze zusammenfügen
Hallo,
ich habe eine Textdatei mit 300.000 Datensätzen.
Das Ergebnis soll in eine separate Datei geschrieben werden und so aussehen:
Kann mir jemand bei dem Code helfen???
ich habe eine Textdatei mit 300.000 Datensätzen.
ID | Artikel | Textfeld
a1 ab123 xxx5
a1 ab123 34wwwwwww
a1 ab123 999sss555777999
b3 x1egr dddfffggg
c5 4a44 rrrrr88888uuuuu
c5 4a44 qqqqrr
c5 4a44 123333
c5 4a44 rrr777
Das Ergebnis soll in eine separate Datei geschrieben werden und so aussehen:
=============================================================
ID | Artikel | Textfeld
a1 ab123 xxx5, 34wwwwwww, 999sss555777999
b3 x1egr dddfffggg
c5 4a44 rrrrr88888uuuuu, qqqqrr, 123333, rrr777
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 219771
Url: https://administrator.de/forum/textdatei-datensaetze-zusammenfuegen-219771.html
Ausgedruckt am: 22.12.2024 um 17:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo weltklasse,
ich habe ein ähnliches Programm geschrieben das aus einer liste im Format
das folgende Format macht
ich könnte mir vorstellen, dass mit ein paar Modifikationen damit ein Programm das für dich richtig ist erzeugt werden kann.
Ich habe gerade etwas viel zu tun daher stell ich dir einfach mal den kompletten Code unbearbeitet zur Verfügung, vielleicht bringt dich das ja weiter.
Mein Code ist bereits kommentiert also hoffe ich dass du dich darin gut zurecht findest
http://pastebin.com/hHXP2VT5
Ansonsten gehe ich davon aus, dass die hier ansässigen Experten eine tolle Lösung für dich bereit haben :p
MfG Budders
ich habe ein ähnliches Programm geschrieben das aus einer liste im Format
lagerplatz
artikel
lagerplatz
...
lagerplatz artikel bestand
ich könnte mir vorstellen, dass mit ein paar Modifikationen damit ein Programm das für dich richtig ist erzeugt werden kann.
Ich habe gerade etwas viel zu tun daher stell ich dir einfach mal den kompletten Code unbearbeitet zur Verfügung, vielleicht bringt dich das ja weiter.
Mein Code ist bereits kommentiert also hoffe ich dass du dich darin gut zurecht findest
http://pastebin.com/hHXP2VT5
Ansonsten gehe ich davon aus, dass die hier ansässigen Experten eine tolle Lösung für dich bereit haben :p
MfG Budders
Hallo weltklasse und willkommen im Forum!
Da Du weder die Trennung der einzelnen Felder, noch deren Inhalt näher beschrieben hast, ein Ansatz der (bis auf die Tatsache, dass Leerzeichen als Trennzeichen betrachtet werden und daher führende Leerzeichen - wie zB vor "dddfffggg" - auf der Strecke bleiben) mit Deinen angegebenen Beispieldaten funktioniert:
Grüße
bastla
Da Du weder die Trennung der einzelnen Felder, noch deren Inhalt näher beschrieben hast, ein Ansatz der (bis auf die Tatsache, dass Leerzeichen als Trennzeichen betrachtet werden und daher führende Leerzeichen - wie zB vor "dddfffggg" - auf der Strecke bleiben) mit Deinen angegebenen Beispieldaten funktioniert:
@echo off & setlocal
set "Ein=D:\DieDatei.txt"
set "Aus=D:\DieneueDatei.txt"
set "Zeile=ID ^| Artikel ^| Textfeld"
del "%Aus%" 2>nul
for /f "usebackq skip=1 tokens=1,2*" %%a in ("%Ein%") do call :ProcessLine %%a %%b "%%c"
>>"%Aus%" echo %Zeile%
goto :eof
:ProcessLine
if "%1%2" neq "%Zuletzt%" (
>>"%Aus%" echo %Zeile%
set "Zeile=%1 %2 %~3"
set "Zuletzt=%1%2"
) else (
set "Zeile=%Zeile%, %~3"
)
goto :eof
bastla
Hallo weltklasse!
Dann eher so:
Die Zeilen 5, 8 und 15 verwenden jetzt TAB als Trennzeichen (delimiter). In Zeile 18 musst Du selbst entscheiden, ob nach dem Komma ein Leerzeichen folgen soll oder (wie in der aktuellen Fassung) nicht ...
Grüße
bastla
Dann eher so:
@echo off & setlocal
set "Ein=D:\DieDatei.txt"
set "Aus=D:\DieneueDatei.txt"
set "Zeile=ID Artikel Textfeld"
del "%Aus%" 2>nul
for /f "usebackq skip=1 tokens=1,2* delims= " %%a in ("%Ein%") do call :ProcessLine %%a %%b "%%c"
>>"%Aus%" echo %Zeile%
goto :eof
:ProcessLine
if "%1%2" neq "%Zuletzt%" (
>>"%Aus%" echo %Zeile%
set "Zeile=%1 %2 %~3"
set "Zuletzt=%1%2"
) else (
set "Zeile=%Zeile%,%~3"
)
goto :eof
Grüße
bastla