Batch Datei um eine CSV zu bearbeiten und umzuformatieren
Guten Abend,
ich habe eine CSV Liste die folgendermaßen aussieht:
MYL: 92.18
TEVA: 91.51
LEG: 90.63
FLR: 88.74
GLD: 79.52
usw.
1-4 Buchstaben dann einen : und anschließend eine Zahl mit zwei Nachkommastellen.
Nun soll aus der Liste die erste Zeile entfernt werden, dafür habe ich folgenden Code gefunden:
anschließend sollen alle Spalten deren Zahl kleiner als 60,00 gelöscht werden.
Zuletzt sollte dann das ganze in folgendes CSV Format geschrieben werden:
SYM,MYL,SMART/AMEX
SYM,TEVA,SMART/AMEX
SYM,LEG,SMART/AMEX
SYM,FLR,SMART/AMEX
SYM,GLD,SMART/AMEX
das SYM, und ,SMART/AMEX ist fix nur eben den Mittelteil soll aus der ursprünglichen CSV Datei von den übrig gebliebenen übernommen werden
den letzten Teil habe ich mit 2 zusätzlichen CSV Dateien und einem gefundenen Code gelöst:
Da ich wirklich sogut wie keine Ahnung davon habe und es sicherlich alles in einer Batch Datei geht wäre es super wenn mir jemand helfen könnte!
Vielen Dank und liebe Grüße
Branpo
ich habe eine CSV Liste die folgendermaßen aussieht:
MYL: 92.18
TEVA: 91.51
LEG: 90.63
FLR: 88.74
GLD: 79.52
usw.
1-4 Buchstaben dann einen : und anschließend eine Zahl mit zwei Nachkommastellen.
Nun soll aus der Liste die erste Zeile entfernt werden, dafür habe ich folgenden Code gefunden:
@echo off
for /f "delims=" %%i in ('dir /a-d /b /on "*.csv"') do (
more /e +1 "%%i">"%%i.tmp"
del "%%i" && ren "%%i.tmp" "%%i"
)
exit /b
anschließend sollen alle Spalten deren Zahl kleiner als 60,00 gelöscht werden.
Zuletzt sollte dann das ganze in folgendes CSV Format geschrieben werden:
SYM,MYL,SMART/AMEX
SYM,TEVA,SMART/AMEX
SYM,LEG,SMART/AMEX
SYM,FLR,SMART/AMEX
SYM,GLD,SMART/AMEX
das SYM, und ,SMART/AMEX ist fix nur eben den Mittelteil soll aus der ursprünglichen CSV Datei von den übrig gebliebenen übernommen werden
den letzten Teil habe ich mit 2 zusätzlichen CSV Dateien und einem gefundenen Code gelöst:
@echo off &setlocal DisableDelayedExpansion
set "outfile=output.csv"
set "first="
set "tmpfile1=%temp%\out.csv~"
set "tmpfile2=%temp%\ascii.csv~"
for /f "delims=" %%i in ('dir /a-d /b /on "*.csv"') do (
echo Verarbeitung von "%%i".
if not defined first (
>"%outfile%" echo "%%i"
>>"%outfile%" type "%%i"
set "first=1"
) else (
set "nextfile=%%i"
call :merge
)
)
pause
exit /b
:merge
>"%tmpfile2%" type "%nextfile%"
<"%outfile%" >"%tmpfile1%" (
set "first=" &set /p "first="
setlocal EnableDelayedExpansion
echo(!first!,"!nextfile!"
endlocal
for /f "delims=" %%j in ('findstr /n "^" "%tmpfile2%"') do (
set "first=" &set /p "first="
set "second=%%j"
setlocal EnableDelayedExpansion
echo(!first!,!second:*:=!
endlocal
)
)
>nul move /y "%tmpfile1%" "%outfile%"
>nul del "%tmpfile2%"
exit /b
Da ich wirklich sogut wie keine Ahnung davon habe und es sicherlich alles in einer Batch Datei geht wäre es super wenn mir jemand helfen könnte!
Vielen Dank und liebe Grüße
Branpo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 475242
Url: https://administrator.de/contentid/475242
Ausgedruckt am: 23.11.2024 um 17:11 Uhr
3 Kommentare
Neuester Kommentar
@echo off
set "quelle=d:\daten"
Powershell -EP Bypass -NoP -c "gci '%quelle%' -Filter *.csv -File | %%{(gc $_.Fullname) | select -skip 1 | ?{[decimal]($_.split(':')[1].trim()) -ge 60} | %%{ 'SYM,' + $_.split(':') + ',SMART/AMEX'} | sc $_.Fullname}"
Gibt es noch die Möglichkeit das er als Quelle automatisch den Ordner nimmt in dem die Bat ist?
Klar. schon mal was von %~dp0 gehört ?!set "quelle=%~dp0"