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-ID: 391702

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

H41mSh1C0R
Lösung H41mSh1C0R 05.11.2018 aktualisiert um 11:01:30 Uhr
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
137443
Lösung 137443 05.11.2018 aktualisiert um 12:18:10 Uhr
Goto Top
Klar, das hier ist schon fast fertig, must du nur minimal an deine Situation anpassen
CSV mit Powershell umwandeln

Gruß l.
BaGaJoize
Lösung BaGaJoize 05.11.2018 um 12:31:30 Uhr
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
rst1989
rst1989 05.11.2018 um 13:47:47 Uhr
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?
rst1989
rst1989 05.11.2018 um 13:48:08 Uhr
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.
137443
Lösung 137443 05.11.2018 aktualisiert um 13:49:47 Uhr
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 ...
rst1989
rst1989 05.11.2018 um 13:56:05 Uhr
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