PowerShell Hilfe
Hallo Community,
ich möchte gerne das Ergebnis auf der Spalte B haben, leider finde ich die Lösung nicht.
Danke
ich möchte gerne das Ergebnis auf der Spalte B haben, leider finde ich die Lösung nicht.
$user= Import-Csv C:\Users\taedv12\Downloads\Aufgaben.csv
$Zahl= $user | Select-Object Zahl1, operand, Zahl2
foreach($user in $user){
do{
[decimal]$zahl1 = 0
$userinput = $user.Zahl1
}until([decimal]::TryParse($userinput,[ref]$zahl1))
do{
$operator = $user.Operand
}until($operator -match '^[-+*/]$')
do{
[decimal]$zahl2 = 0
$userinput = $user.Zahl2
}until([decimal]::TryParse($userinput,[ref]$zahl2))
$result= "$zahl1,$operator, $zahl2"
$summe = Invoke-Expression "$zahl1 $operator $zahl2"
$ergebniss = $result,$summe
$ergebniss>> C:\Users\taedv12\Downloads\Ergebniss.csv
}
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4034047690
Url: https://administrator.de/contentid/4034047690
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
da es ja offensichtlich Schulaufgaben sind und der Lerneffekt deutlich höher ist, wenn man sich selbst das Ergebnis erarbeitet:
beschäftige dich mal mit
Mit dem Custom Object schiebst erzeugst du zwei Properties: $calc und $result. $calc ist deine zusammengesetzte Berechnung, $result dein Ergebnis.
das gesamte Object schiebst du dann per Export-CSV in eine CSV und hast beides nebeneinander.
Edit:
alternativ:
Gruß
em-pie
da es ja offensichtlich Schulaufgaben sind und der Lerneffekt deutlich höher ist, wenn man sich selbst das Ergebnis erarbeitet:
beschäftige dich mal mit
Mit dem Custom Object schiebst erzeugst du zwei Properties: $calc und $result. $calc ist deine zusammengesetzte Berechnung, $result dein Ergebnis.
das gesamte Object schiebst du dann per Export-CSV in eine CSV und hast beides nebeneinander.
Edit:
alternativ:
$result= "$zahl1 $operator $zahl2"
$summe = Invoke-Expression "$zahl1 $operator $zahl2"
$ergebnis = "$result;$summe"
$ergebnis>> C:\Users\taedv12\Downloads\Ergebniss.csv
Gruß
em-pie
Moin,
Aha, eine Hausaufgabe.
Nein. Die Variablen müssen unterschiedliche Namen haben.
Das sind Endlosschleifen, falls nicht die valide Werte in den Feldern stehen. Falsche Fehlerbehandlung. Bitte nochmal machen.
Um das zu erreichen, was Du willst, würde ich ein PS-Object konstruieren und dann mit export-csv arbeiten. Aber erst einmal alle Fehler bereinigen.
hth
Erik
Zitat von @samy0025:
$user= Import-Csv C:\Users\taedv12\Downloads\Aufgaben.csv
$Zahl= $user | Select-Object Zahl1, operand, Zahl2
Aha, eine Hausaufgabe.
foreach($user in $user){
Nein. Die Variablen müssen unterschiedliche Namen haben.
do{
[decimal]$zahl1 = 0
$userinput = $user.Zahl1
}until([decimal]::TryParse($userinput,[ref]$zahl1))
do{
$operator = $user.Operand
}until($operator -match '^[-+*/]$')
do{
[decimal]$zahl2 = 0
$userinput = $user.Zahl2
}until([decimal]::TryParse($userinput,[ref]$zahl2))
Das sind Endlosschleifen, falls nicht die valide Werte in den Feldern stehen. Falsche Fehlerbehandlung. Bitte nochmal machen.
$result= "$zahl1,$operator, $zahl2"
$summe = Invoke-Expression "$zahl1 $operator $zahl2"
$ergebniss = $result,$summe
$ergebniss>> C:\Users\taedv12\Downloads\Ergebniss.csv
}
Um das zu erreichen, was Du willst, würde ich ein PS-Object konstruieren und dann mit export-csv arbeiten. Aber erst einmal alle Fehler bereinigen.
hth
Erik
Moin,
@samy0025
Dir ist klar das jeder falsche Operater (oder jede nicht-Zahl) dein Script in eine Endlosschleife schickt?
lg,
Slainte
Könntest du eventuell die .csv-Datei abbilden? So kann ich leider nicht das ganze reproduzieren
Die csv hat den Inhalt jeder ungeraden Zeile aus dem Screenshot@samy0025
Dir ist klar das jeder falsche Operater (oder jede nicht-Zahl) dein Script in eine Endlosschleife schickt?
lg,
Slainte
Moin,
Nein, das ist der Screenshot einer Exceltabelle. Wenn Du das textuell gepostet hättest, hätte ich das testen können:
Das sollte aber funktionieren.
<edit> Klammer korrigiert</edit>
hth
Erik
Nein, das ist der Screenshot einer Exceltabelle. Wenn Du das textuell gepostet hättest, hätte ich das testen können:
$data= Import-Csv C:\Users\taedv12\Downloads\Aufgaben.csv
foreach($dataset in $data) {
# Fehlerbehandlung überlasse ich Dir selbst
$result = New-Object PS-Object -property @{
Zahl1 = $dataset.zahl1
Operand = $dataset.operand
Zahl2 = $dataset.zahl2
Ergebniss = (invoke-expression "$($dataset.zahl1) $($dataset.operand) $($dataset.zahl2)")
}
$result | export-csv C:\Users\taedv12\ergebnis.csv -NoTypeInformation -Delimiter ";" -Encoding UTF8 -Append
}
Das sollte aber funktionieren.
<edit> Klammer korrigiert</edit>
hth
Erik