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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 3609137555
Url: https://administrator.de/contentid/3609137555
Printed on: December 4, 2023 at 12:12 o'clock
3 Comments
Latest comment

@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