rst1989
Goto Top

Powershell-Script - Spalte mit Lagerbestand erkennen und umwandeln

Hallo zusammen,

Ich habe verschiedene CSV-Dateien (verschiedene Spaltentrenner) in der eine Spalte mit "Lagerbestand" enthalten ist.
Ich möchte die Spalte "Lagerbestand" auswerten und alles was über "0" ist auf "Y" ändern. Alles mit "0" oder weniger (manchmal Minus) will ich ändern zu "N"

Ich habe verschiedene CSV-Dateien und die Spalte mit dem Lagerbestand steht in verschiedenen Spalten. Auch die Spaltentrenner variieren.
Die Powershell-Datei möchte ich daher selbst anpassen können.

Beispiel: Der Bestand steht in Spalte "F" und es sind Ganzzhalen: 10, 20, 0 oder gar -20
10 = Y
20 = Y
0 = N
-20 = N

Geht das über Powershell? face-smile
Danke für Tipps.

Viele Grüße

Content-Key: 391702

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

Printed on: April 26, 2024 at 22:04 o'clock

Member: H41mSh1C0R
Solution H41mSh1C0R Nov 05, 2018 updated at 10:01:30 (UTC)
Goto Top
Moin,

Zitat von @rst1989:
Geht das über Powershell? face-smile

Ja

Mit Import-CSV (mit -Delimiter das passende Trennzeichen anpassen) das CSV importieren und bearbeiten und danach wieder speichern.

VG
Mitglied: 137443
Solution 137443 Nov 05, 2018 updated at 11:18:10 (UTC)
Goto Top
Klar, das hier ist schon fast fertig, must du nur minimal an deine Situation anpassen
CSV mit Powershell umwandeln

Gruß l.
Member: BaGaJoize
Solution BaGaJoize Nov 05, 2018 at 11:31:30 (UTC)
Goto Top
$path = "test.csv"  

$ImportedCSV = Import-CSV $path -Delimiter ","  

$NewCSV = Foreach ($Entry in $ImportedCsv) {
    if([int]$Entry.lagerbestand -gt 0)
    {
        $Entry.lagerbestand = "Y"  
    }
   $Entry
}
$NewCSV | Export-CSV $path -NoTypeInformation

Sollte so klappen
Member: rst1989
rst1989 Nov 05, 2018 at 12:47:47 (UTC)
Goto Top
@BaGaJoize: Danke, deine Lösung funktioniert. Es fehlt aber das "N" wenn der Bestand 0 oder kleiner ist. Wie bkeomme ich das da rein?
Member: rst1989
rst1989 Nov 05, 2018 at 12:48:08 (UTC)
Goto Top
Das klappt scheinbar nur wenn die CSV eine Spalte hat und die erste Spalte der Lagerbestand wäre. Bei mir fängt der Lagerbestand aber in verschiedenen Spalten an.
Mitglied: 137443
Solution 137443 Nov 05, 2018 updated at 12:49:47 (UTC)
Goto Top
Zitat von @rst1989:

Das klappt scheinbar nur wenn die CSV eine Spalte hat und die erste Spalte der Lagerbestand wäre.
Nein.
Es fehlt aber das "N"
Einfach den "Else" Teil hinzufügen und dort das N setzen ...
Member: rst1989
rst1989 Nov 05, 2018 at 12:56:05 (UTC)
Goto Top
Zitat von @137443:

Zitat von @rst1989:

Das klappt scheinbar nur wenn die CSV eine Spalte hat und die erste Spalte der Lagerbestand wäre.
Nein.
Es fehlt aber das "N"
Einfach den "Else" Teil hinzufügen und dort das N setzen ...

Danke habe es so gelöst:

$path = "Datei.csv"   

$ImportedCSV = Import-CSV $path -Delimiter ";"   
$NewCSV = Foreach ($Entry in $ImportedCsv) { 

    if([int]$Entry.Bestand -gt 0) 
    { 
        $Entry.Bestand = "Y"   
    } 
    elseif ([int]$Entry.Bestand -le 0) 
    { 
        $Entry.Bestand = "N"   
    } 
   $Entry 
} 
$NewCSV | Export-CSV $path -NoTypeInformation