If Else mit CSV Export Powerhell
Hallo,
ich steh hier jetzt auf dem Schlauch. Ich komme hier nicht weiter.
Ich habe eine Spalte, die heißt Artikelnummer. In der Spalte steht die Artikelnummer mit der Variante sprich so:
125411-400g-2454
121584-1kg-1214
Artikelnummer-Variantenwert-Artikelnummer
Jetzt möchte ich die Spalten auslesen da Sie berechnet werden müssen mit dem Einkaufspreis da ich nur 1kg Preise habe muss ich die dann dementsprechend auf 200,400,600,800g runterechnen.
Ich scheitere aber schon an der einfachen If Else Logik, oder auch switch.
Ich habe jetzt das hier:
Ich habe noch eine Spalte hinzugefügt die heißt "Match", wenn sozusagen ein 400g Treffer war dann soll er 400 in die Matchspalte einfügen.Damit ich die dann auf den Einkaufspreis berechnen lassen kann. der in spalte "Einkaufspreis" steht.
Ich bekomme jetzt folgenden "Fehler"
Cmdlet Export-Csv an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden Parameter an:
InputObject:
Ich komme hier einfach nicht weiter, vielleicht kann mir hier jemand helfen, darüber wäre ich sehr dankbar.
Gruß
Dennis
ich steh hier jetzt auf dem Schlauch. Ich komme hier nicht weiter.
Ich habe eine Spalte, die heißt Artikelnummer. In der Spalte steht die Artikelnummer mit der Variante sprich so:
125411-400g-2454
121584-1kg-1214
Artikelnummer-Variantenwert-Artikelnummer
Jetzt möchte ich die Spalten auslesen da Sie berechnet werden müssen mit dem Einkaufspreis da ich nur 1kg Preise habe muss ich die dann dementsprechend auf 200,400,600,800g runterechnen.
Ich scheitere aber schon an der einfachen If Else Logik, oder auch switch.
Ich habe jetzt das hier:
Import-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018.csv" -Encoding Default -delimiter ";"
Select-Object "Match" |
ForEach-Object {
If ($_.Artikelnummer -match '-400g') {
$_.Match = "200"
} Else {
"400g"
}
}
Export-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018gggg.csv" -notypeinformation -Encoding Default
Ich habe noch eine Spalte hinzugefügt die heißt "Match", wenn sozusagen ein 400g Treffer war dann soll er 400 in die Matchspalte einfügen.Damit ich die dann auf den Einkaufspreis berechnen lassen kann. der in spalte "Einkaufspreis" steht.
Ich bekomme jetzt folgenden "Fehler"
Cmdlet Export-Csv an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden Parameter an:
InputObject:
Ich komme hier einfach nicht weiter, vielleicht kann mir hier jemand helfen, darüber wäre ich sehr dankbar.
Gruß
Dennis
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 386119
Url: https://administrator.de/forum/if-else-mit-csv-export-powerhell-386119.html
Ausgedruckt am: 04.04.2025 um 14:04 Uhr
21 Kommentare
Neuester Kommentar
Moin,
Wohin importierst Du die Datei? Das muss heißen:
Nö, das geht so:
Und dann zum Schluss das Objekt wieder exportieren:
hth
Erik
Zitat von @dennis89:
Import-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018.csv" -Encoding Default -delimiter ";"
Wohin importierst Du die Datei? Das muss heißen:
$arr_data = Import-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018.csv" -Encoding Default -delimiter ";"
Select-Object "Match" |
> ForEach-Object {
> If ($_.Artikelnummer -match '-400g') {
> $_.Match = "200"
> } Else {
> "400g"
> }
Nö, das geht so:
foreach($dataset in $arr_data) {
if($_Artikelnummer -match "400g") {
$_.Match = 200 # echt 200? Und was machen da die Anführungszeichen?
}
else {
# Was auch immer Du sonst machen willst. Das, was Da steht macht keinen Sinn.
}
}
> Export-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018gggg.csv" -notypeinformation -Encoding Default
Und dann zum Schluss das Objekt wieder exportieren:
$arr_data | Export-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018gggg.csv" -notypeinformation -Encoding Default
hth
Erik

Powerhell
Sorry, aber das passt zu deinem Quelltext Ich würde das so machen wenn in der CSV schon die Kilopreise in der Spalte Einkaufspreis stehen. Damit werden diese an die Menge des Artikels automatisch angepasst ohne extra eine Spalte Match erstellen zu müssen.
$csv = Import-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018.csv" -Encoding Default -delimiter ";"
$csv | ?{$_.Artikelnummer -match '-(\d+)(k?g)-'} | %{
$faktor = @{'g'=[int]$matches[1] /1000;'kg'=[int]$matches[1]}[($matches[2])]
$_.Einkaufspreis = ([decimal]::Parse($_.Einkaufspreis,[cultureinfo]::GetCultureInfo('de')) * $faktor).toString().replace('.',',')
}
$csv | Export-Csv "C:\Users\Chef\Desktop\JTL-Export-Artikeldaten-111092018gggg.csv" -notypeinformation -Encoding Default

Zitat von @dennis89:
Moin ElMano,
ja das wäre ja richtig, aber ich habe ja keine Eindeutigen "Grammzahlen" in der Zelle. Ich habe die ja so stehen 123456789-400g-123456
oder auch 123456789-1kg-12345678.
Na und, das berücksichtigt mein Skript bereits! Es berechnet den passenden Faktor egal ob da KG oder g stehen automatisch, so dass dieser direkt mit dem Kilopreis des EK multipliziert werden kann.Moin ElMano,
ja das wäre ja richtig, aber ich habe ja keine Eindeutigen "Grammzahlen" in der Zelle. Ich habe die ja so stehen 123456789-400g-123456
oder auch 123456789-1kg-12345678.

Tja, wenn man so "intelligent" ist und die Zeilennummern mit ins Skript kopiert, kann man nur sagen Koppschüttel, sorry. Hier will sich offensichtlich nur wieder jemand seine Arbeit machen lassen die er vom Cheffe aufgedrückt bekommen hat.
I'm out.
I'm out.
wenn das so wäre, hättest du doch sicherlich neue Screenshots hier eingestellt, oder?
soo lange arbeite ich auch noch nicht mit der PS
ich kann ein paar sachen schon aber halt soetwas überhaupt nciht,
das macht ja nichts. Hier wird oft gerne geholfenich versuche das ja zu verstehen aber wenn man mir da den Code so hinballert muss ich den erstmal für mich zerlegen um auf meine Bedürfnisse anzupassen.
nein! Der, der versucht zu helfen, geht davon aus, dass sein Code die Problemstellung löst. Wenn du den Code nicht verstehst, musst du lesen und debuggen und danach evtl. nach einer Erklärung fragen. Das o.g. Konstrukt ist mir auch nicht geläufig - lerne also gerade selbst wieder dazuWelche Code meist du ? der von ElMano
jepfunktioniert nicht,
das ist keine Fehlermeldung / Fehlerbeschreibung!irgendwas mit replace..
88wenn ich ein Bindestrich davor setze geht das auch nicht..
wovor setzt du ein - ?und da ich es noch nichts verstehe das ding auseinander zulegen kann ich mit dem Code nichts anfangen.
eine Aussage, die einem übel genommen werden kann!
Kann ja auch nicht gehen weil ich deine tatsächlichen Bedingungen bis zu meinem Code noch nicht kannte und das die Einkaufspreis Spalte leer sein kann, das ist der Grund! Außerdem muss für deine Bedingungen das Skript komplett umgeschrieben werden!
Für funktionsfähigen Code für deine geschilderte Anforderung, gerne PN schicken.
Ist ja sonst eh für niemanden nützlich außer dir da die Anforderung so speziell ist.
Für funktionsfähigen Code für deine geschilderte Anforderung, gerne PN schicken.
Ist ja sonst eh für niemanden nützlich außer dir da die Anforderung so speziell ist.
Moin,
Oops, da habe ich was übersehen. Das muss so aussehen. Sorry.
<edit>Und weiter unten natürlich auch statt $_.Einkaufspreis $dataset.Einkaufspreis</edit>
hth
Erik
Zitat von @dennis89:
Ich teste auch die andere Varianten,
Bekomme ich kein Fehlercode aber er schreibt nicht in das Feld Einkaufspreis..
Ich teste auch die andere Varianten,
if($_Artikelnummer -match "200g") {
>
Oops, da habe ich was übersehen. Das muss so aussehen. Sorry.
if($dataset.Artikelnummer -match "200g")
<edit>Und weiter unten natürlich auch statt $_.Einkaufspreis $dataset.Einkaufspreis</edit>
hth
Erik

Die Powerhölle ist zugefroren. Thema erledigt.
Haken nicht vergessen.
Haken nicht vergessen.