CSV untereinander verketten..?
Hallo.
Ich habe nochmal eine Frage wegen einer Batch: Ich sortiere regelmäßig eine CSV von Hand über Openoffice. Nun dachte ich mir, das könnte doch auch über eine Batch funktionieren. Es klappt auch soweit bisauf zwei Sachen, Straße und Hausnummer sollen miteinander verkettet werden. zuerst mal wie ich mir das Gedacht habe:
for /f "tokens=1,8,1-8 delims=; " %%a in (eingang.csv) do echo ;;%%a;%%b;%%d;%%e;%%f %%g;%%c;%%h>>ausgang.txt
In der ersten Spalte brauche ich eigentlich eine fortlaufende Nummer, hier in der Zeile habe ich nur durch ein ; als Platzhalter hinterlegt.
%%f und %%g möchte ich verketten, das ist meine Straße und Hausnummer in einem Feld stehen. Leider ist die Straße text und steht noch in Anführungszeichen:; "Hauptstr" 1; gibts einen Trick wie ich die 1 noch in das Feld schmuggeln kann?
Und die Sache mit der fortlaufenden Nummer..
Ich habe nochmal eine Frage wegen einer Batch: Ich sortiere regelmäßig eine CSV von Hand über Openoffice. Nun dachte ich mir, das könnte doch auch über eine Batch funktionieren. Es klappt auch soweit bisauf zwei Sachen, Straße und Hausnummer sollen miteinander verkettet werden. zuerst mal wie ich mir das Gedacht habe:
for /f "tokens=1,8,1-8 delims=; " %%a in (eingang.csv) do echo ;;%%a;%%b;%%d;%%e;%%f %%g;%%c;%%h>>ausgang.txt
In der ersten Spalte brauche ich eigentlich eine fortlaufende Nummer, hier in der Zeile habe ich nur durch ein ; als Platzhalter hinterlegt.
%%f und %%g möchte ich verketten, das ist meine Straße und Hausnummer in einem Feld stehen. Leider ist die Straße text und steht noch in Anführungszeichen:; "Hauptstr" 1; gibts einen Trick wie ich die 1 noch in das Feld schmuggeln kann?
Und die Sache mit der fortlaufenden Nummer..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 181451
Url: https://administrator.de/contentid/181451
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
muss es Batch sein?
Was ich meine ist, wenn Du OpenOffice benutzt, wieso benutzt Du dann ein Batch-Skript um die Daten zu sortieren? Auch in OpenOffice sollte sich das automatisieren lassen.
Und wenn Du das nicht möchtest, dann gibt's eine große Zahl an Programmiersprachen, mit denen Du solche Sachen in wenigen Zeilen erledigen kannst (Perl, Awk, Python, Ruby, VB, ...).
Wenn's Perl sein darf, dann poste bitte mal eine Beispielzeile, damit man mal sieht was gemacht werden soll.
Markus
muss es Batch sein?
Was ich meine ist, wenn Du OpenOffice benutzt, wieso benutzt Du dann ein Batch-Skript um die Daten zu sortieren? Auch in OpenOffice sollte sich das automatisieren lassen.
Und wenn Du das nicht möchtest, dann gibt's eine große Zahl an Programmiersprachen, mit denen Du solche Sachen in wenigen Zeilen erledigen kannst (Perl, Awk, Python, Ruby, VB, ...).
Wenn's Perl sein darf, dann poste bitte mal eine Beispielzeile, damit man mal sieht was gemacht werden soll.
Markus
Hallo chrislm!
Das "Sortieren" lese ich aus Deinem Ansatz zwar noch nicht heraus, aber zumindest hinsichtlich der Nummerierung könnte ich ergänzend zu Skyes Vorschlag für die "Straße" noch etwas (Ungetestetes) beitragen:
Sollten die Daten ":" enthalten, wäre eine zusätzliche Schleife erforderlich:
Grüße
bastla
Das "Sortieren" lese ich aus Deinem Ansatz zwar noch nicht heraus, aber zumindest hinsichtlich der Nummerierung könnte ich ergänzend zu Skyes Vorschlag für die "Straße" noch etwas (Ungetestetes) beitragen:
for /f "tokens=1-9 delims=:;" %%a in ('findstr /n "^" eingang.csv') do >>ausgang.txt echo %%a;%%b;%%c;%%e;%%f;%%~g %%d;%%i
for /f "tokens=1* delims=:" %%x in ('findstr /n "^" eingang.csv') do for /f "tokens=1-8 delims=;" %%a in ("%%y") do >>ausgang.txt echo %%x;%%a;%%b;%%d;%%e;%%~f %%c;%%h
bastla