freshman2017
Goto Top

Powershell - Wert aus einer Spalte auf andere Spalten aufteilen

Hallo Zusammen,

ich habe mehrere CSV Dateien (6 Spalten), die wie folgt aufgebaut sind:

1002XXXX;11XXX-XXXXXXXXXX;Artikelnummer;19.07.2024;1;30,35;
1002XXXX;11XXX-XXXXXXXXXX;Artikelnummer;19.07.2024;1;30,35;
1002XXXX;11XXX-XXXXXXXXXX;Artikelnummer;19.07.2024;1;3,35;
1002XXXX;11XXX-XXXXXXXXXX;Rabatt123;19.07.2024;1;15,00;
1002XXXX;11XXX-XXXXXXXXXX;Versand-123;19.07.2024;1;3,28;

es kann, wie oben vorkommen, dass in Spalte 3 der Wert "Rabatt123" vorkommt, dann würde ich gerne, dass der Wert aus der 6. Spalte gleichmäßig auf alle Werte aufgeteilt / abgezogen werden, außer bei einer Zeile, wo in der Spalte 3 Versand-123 vorkommt:

1002XXXX;11XXX-XXXXXXXXXX;Artikelnummer;19.07.2024;1;25,35;
1002XXXX;11XXX-XXXXXXXXXX;Artikelnummer;19.07.2024;1;25,35;
1002XXXX;11XXX-XXXXXXXXXX;Artikelnummer;19.07.2024;1;-2,35;
1002XXXX;11XXX-XXXXXXXXXX;Versand-123;19.07.2024;1;3,28;

Wäre das mit Powershell möglich?

Beste Grüße,

freschman2017

Content-ID: 668044

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

Ausgedruckt am: 27.09.2024 um 03:09 Uhr

14260433693
Lösung 14260433693 11.09.2024 aktualisiert um 11:27:45 Uhr
Goto Top
-2,35
Knapp daneben ist auch vorbei 😛

foreach($file in Get-ChildItem "D:\Ordner" -File -Filter *.csv){  
    $csv = Import-CSV -Path $file.FullName -Delimiter ";" -Header (1..7)  
    $rabatt = $csv | ?{$_.3 -eq 'Rabatt123'} | %{[decimal]::Parse($_.6,[cultureinfo]'de')}  
    if ($rabatt){
        $articles = $csv | ?{$_.3 -notin 'Versand-123','Rabatt123'}  
        $peritem = $rabatt / $articles.count
        $articles | %{$_.6 = [decimal]::Parse($_.6,[cultureinfo]'de') - $peritem}  
        ($csv | ?{$_.3 -ne 'Rabatt123'} | Convertto-CSV -Delimiter ";" -NoTypeInformation | select -Skip 1) -replace '"' | Set-Content -Path $file.Fullname  
    }
}

Da bastelt wieder jemand an der "Next Generation Bestellverwaltung" 😂

Gruß