Batch - bestimmte Spalten addieren und ausgeben
Hallo Gemeinde!
Als bisheriger stiller Mitleser, suche ich jetzt auch nach einer Lösung / Ansatz um eine Text-Datei mit Hilfe einer Batch-Datei aufzubereiten.
Text-Datei mit nachfolgendem Aufbau:
Jetzt würde ich gerne die 3. Spalte anhand der 1. Spalte zusammenrechnen und einer weiteren Text-Datei ausgeben lassen:
Ist das mit Batch möglich?
Als bisheriger stiller Mitleser, suche ich jetzt auch nach einer Lösung / Ansatz um eine Text-Datei mit Hilfe einer Batch-Datei aufzubereiten.
Text-Datei mit nachfolgendem Aufbau:
TEST-1;XYZ;0,25;
TEST-1;XYZ;0,25;
TEST-2;XYZ;0,25;
TEST-2;XYZ;0,25;
TEST-2;XYZ;0,75;
Jetzt würde ich gerne die 3. Spalte anhand der 1. Spalte zusammenrechnen und einer weiteren Text-Datei ausgeben lassen:
TEST-1;XYZ;0,5;
TEST-2;XYZ;1,25;
Ist das mit Batch möglich?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3609137555
Url: https://administrator.de/forum/batch-bestimmte-spalten-addieren-und-ausgeben-3609137555.html
Ausgedruckt am: 08.04.2025 um 17:04 Uhr
3 Kommentare
Neuester Kommentar

@echo off
set "quelle=D:\quelle.csv"
set "ziel=D:\ziel.csv"
powershell -EP Bypass -C "(Import-CSV '%quelle%' -Delimiter ';' -Header (1..4) | Group '1' | foreach{$_.Group.3 = ($_.Group.3 | foreach{[decimal]::Parse($_,[cultureinfo]'de')} | measure -Sum).Sum;$_.Group} | Convertto-CSV -Delimiter ';' -NoTypeInformation | select -skip 1) -replace '\"' | set-content '%ziel%'"
Ist das mit Batch möglich?
Mit Batch geht einiges aber ob das ehrlich gesagt noch sinnvoll ist?! Ich fahr ja heute auch nicht mehr mit ner Dampflok jeden Tag zur Arbeit ...p.s. Warum macht ihr bei CSV-Dateien in der letzten Spalte immer noch ein abschließendes Semikolon?? ein Semikolon am Ende sagt im Normalfall "hier kommt danach noch eine weitere Spalte", ist also überflüssig.
Batch habe ich 1:1 kopiert
... und (sorry wenn ich das so sagen muss) nicht versucht zu verstehen.Ich habe jetzt folgende quelle.csv
Die hat jetzt nur noch 3 und nicht 4 Spalten, da Zeilen nicht mehr mit Semikolon enden. Also wird das ein -Header (1..3)
im Code.Ich bekomme aber irgendwie keine Ausgabe.
Wenn du die Anführungszeichen zählst, siehst du, dass sie durch das -replace '\"'
unpaarig geworden sind. Somit ist die letzte Pipe nicht mehr in einem in Anführungszeichen eingefassten Bereich und muss für das Parsen im CMD Prozess mit ^ escaped werden.powershell -EP Bypass -C "(Import-CSV '%quelle%' -Delimiter ';' -Header (1..3) | Group '1' | foreach{$_.Group.3 = ($_.Group.3 | foreach{[decimal]::Parse($_,[cultureinfo]'de')} | measure -Sum).Sum;$_.Group} | Convertto-CSV -Delimiter ';' -NoTypeInformation | select -skip 1) -replace '\"' ^| set-content '%ziel%'"
Steffen