branpo
Goto Top

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:

@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

Content-Key: 475242

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

Printed on: April 23, 2024 at 06:04 o'clock

Mitglied: 140447
Solution 140447 Jul 20, 2019 updated at 08:51:39 (UTC)
Goto Top
@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}"  
Member: Branpo
Branpo Jul 20, 2019 updated at 14:35:11 (UTC)
Goto Top
Vielen Dank für den Quellcode.
Er funktioniert super! face-smile

Gibt es noch die Möglichkeit das er als Quelle automatisch den Ordner nimmt in dem die Bat ist?
Mitglied: 140447
Solution 140447 Jul 20, 2019 updated at 15:29:11 (UTC)
Goto Top
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 face-wink?!
set "quelle=%~dp0"