chrislm
Goto Top

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..

Content-ID: 181451

Url: https://administrator.de/contentid/181451

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

64748
64748 05.03.2012 um 17:00:03 Uhr
Goto Top
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
chrislm
chrislm 05.03.2012 um 17:03:33 Uhr
Goto Top
VBS würde auch gehen aber ich mag die klassischen DOS Dinger, deswegen lande ich immer zuerst hier...
Skyemugen
Skyemugen 05.03.2012 um 17:26:24 Uhr
Goto Top
Aloha,

wie wo was fortlaufende Nummer, fortlaufend pro Datei, pro Zeile, pro keine Ahnung was, pro Batchaufruf? ... EIn bisschen genauer, wenn's geht.

Was dein Straßenproblem angeht, sollte %%~f dir die Lösung bieten.

greetz André
bastla
bastla 05.03.2012 um 19:41:48 Uhr
Goto Top
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:
for /f "tokens=1-9 delims=:;" %%a in ('findstr /n "^" eingang.csv') do >>ausgang.txt echo %%a;%%b;%%c;%%e;%%f;%%~g %%d;%%i
Sollten die Daten ":" enthalten, wäre eine zusätzliche Schleife erforderlich:
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
Grüße
bastla
chrislm
chrislm 06.03.2012 um 08:04:48 Uhr
Goto Top
Das ist wie immer klasse hier im Forum. Mir wurde immer sofort weitergeholfen fafür vielen dank!
Das script von Bastler läuft bisauf eine sache: Die Straße mit vollen Zahlen werden sind Perfekt. Aber die mit z.B. 9a stehen in anführungszeichen: Hauptstr "9a". aber zur Not muss ich diese dann dochnoch von Hand editieren...

Aber das mit der fortlaufenden Nummer klappt so wie ich es wollte...
chrislm
chrislm 06.03.2012 um 08:56:09 Uhr
Goto Top
Ich habs, hab einfach noch eine ~ dazwischen gesetzt...

vielen dank!!!!