Inhalt aus csv Spalten aufschluesseln
Folgendes kleines Problem:
Ich habe eine csv Datei mit Inhalt:
"Text " "Zahl" "Zahlen"
"Nummer1" "01" "011 012 013"
"Nummer2" "02" "022 023 024 025"
ich möchte diese csv umformen in:
"Text " "Zahl" "Zahlen1" "Zahlen2" "Zahlen3" "Zahlen4"
"Nummer1" "01" "011" "012" "013" ""
"Nummer2" "02" "022" 023" 024" "025"
Fragt sich jetzt nur ob es dafür ein kleines Script gibt?
Vielen Dank schon mal im voraus.
Gruß Markus
Ich habe eine csv Datei mit Inhalt:
"Text " "Zahl" "Zahlen"
"Nummer1" "01" "011 012 013"
"Nummer2" "02" "022 023 024 025"
ich möchte diese csv umformen in:
"Text " "Zahl" "Zahlen1" "Zahlen2" "Zahlen3" "Zahlen4"
"Nummer1" "01" "011" "012" "013" ""
"Nummer2" "02" "022" 023" 024" "025"
Fragt sich jetzt nur ob es dafür ein kleines Script gibt?
Vielen Dank schon mal im voraus.
Gruß Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90198
Url: https://administrator.de/contentid/90198
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Arafat!
Soferne die Maximalanzahl an aus der Zerlegung des "Spezialfeldes" entstehenden Feldern bekannt ist, etwa so:
Als %FeldNr% ist das weiter zu zerlegende Feld (im Beispiel also "Zahlen") anzugeben. Die Anzahl der Teile wird durch "tokens=1-4" und die Verwendung von "%%a" bis "%%d" im Programmteil ":ProcessField" festgelegt.
Grüße
bastla
Soferne die Maximalanzahl an aus der Zerlegung des "Spezialfeldes" entstehenden Feldern bekannt ist, etwa so:
@echo off & setlocal
set "Quelle=D:\Quell.csv"
set "Ziel=D:\Ziel.csv"
set /a FeldNr=3
echo "Text " "Zahl" "Zahlen1" "Zahlen2" "Zahlen3" "Zahlen4" "Name">"%Ziel%"
for /f "usebackq skip=1 delims=" %%i in ("%Quelle%") do set "Zeile=%%i" & call :ProcessLine
goto :eof
:ProcessLine
set /a Nr=1
set ZeileNeu=
for %%a in (%Zeile%) do call :ProcessField %%a
echo %ZeileNeu:~1%>>"%Ziel%"
goto :eof
:ProcessField
set Feld=%1
if %Nr% neq %FeldNr% goto :Hinzu
for /f "tokens=1-4" %%a in (%1) do set "Feld="%%a" "%%b" "%%c" "%%d""
:Hinzu
set "ZeileNeu=%ZeileNeu% %Feld%"
set /a Nr+=1
goto :eof
Grüße
bastla
Hallo Arafat!
Anyhow, versuch es mit dieser Zeile 14:
Grüße
bastla
... alle weiter werden auf der console ausgegeben.
Kann ich mir nicht erklären, da die Zieldatei ja als Variable, welche sich nach der Zeile 3 nicht mehr ändert, angegeben ist - wenn also in Zeile 06 in die Datei geschrieben wird, müsste das auch Zeile 14 tun ...Anyhow, versuch es mit dieser Zeile 14:
>>"%Ziel%" echo %ZeileNeu:~1%
bastla