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
Please also mark the comments that contributed to the solution of the article
Content-Key: 90198
Url: https://administrator.de/contentid/90198
Printed on: April 26, 2024 at 19:04 o'clock
6 Comments
Latest comment
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