xauiii
Goto Top

Mehrere CSV Tabellen erst bearbeiten danach zusammenführen

Hallo

wie kann man in Batch mehrere CSV Dateien Bearbeiten und danach zu einer zusammenführen? Hab mir das so gedacht es gibt 4 CSV Tabellen die wie folgt aufgebaut sind

nummer; zahl1; zahl2; zahl3

jetzt sollte in 3 Dateien die zahl1 einmal mit 0,20 multipliziert werden in der anderen 0,30 und die letzte mit 0,40 die letzte Datei bleibt unberührt und dann alle werte in eine Tabelle geschrieben werden die genauso aufgebaut ist also

nummer; zahl1; zahl2; zahl3

alle Dateien haben immer die selbe erste Zeile die muss natürlich dann nur einmal verwendet werden und sollte sozusagen nur einmal in die neue CSV Datei geschrieben werden.

Content-ID: 479170

Url: https://administrator.de/forum/mehrere-csv-tabellen-erst-bearbeiten-danach-zusammenfuehren-479170.html

Ausgedruckt am: 21.04.2025 um 04:04 Uhr

rubberman
rubberman 31.07.2019 um 09:37:52 Uhr
Goto Top
wie kann man in Batch
Gar nicht. Batch kann CSV Daten nicht sicher verarbeiten. Außerdem gibt es nur ganzzahlige Arithmetik. So etwas wie "multipliziere mit Nullkommairgendwas" ist nicht.

Steffen
140447
Lösung 140447 31.07.2019 aktualisiert um 10:31:25 Uhr
Goto Top
Nimm gleich die Powershell wenn es sich um eine Windose handelt.

Wenn die CSV Dateien so aussehen:
Header1;Header2;Header3;Header4
1111;10.5;20;30
Dann mit folgendem Code (Quell- und Ziel-Dateinamen und Spaltenüberschrift der Spalte 2 anpassen)
$files = 'D:\Datei1.csv','D:\Datei2.csv','D:\Datei3.csv','D:\Datei4.csv'  
$factors = 0.2,0.3,0.4,1
0..($files.Count -1) | %{
    $index = $_
    Import-CSV $files[$_] -Delimiter ";" | %{  
        $_.'Header2' = [decimal]$_.'Header2' * $factors[$index]  
        $_
    }
} | export-csv "D:\out.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation  
xauiii
xauiii 31.07.2019 um 11:37:16 Uhr
Goto Top
Perfekt genau das was ich gebraucht habe face-smile vielen vielen dank.