Avatar billede ladelund Juniormester
19. august 2022 - 12:33 Der er 5 kommentarer og
1 løsning

Erstatte negative værdier med i PowerShell

Hej Eksperter

Jeg har noget data:
"Number";"Name";"Manufacturer";"Brand ID";"EAN";"Price";"Currency Code";"StockLevel"
"88212115";"Starter";"PowerMax";"4543";"5713852365634";"79,81";"EUR";"181"
"88212119";"Starter";"PowerMax";"4543";"5713852365672";"209,07";"EUR";"1"
"88212120";"Starter";"PowerMax";"4543";"5713852365689";"91,56";"EUR";"30"
"88212121";"Starter";"PowerMax";"4543";"5713852365696";"79,81";"EUR";"-6"
"88212125";"Starter";"PowerMax";"4543";"5713852365733";"84,51";"EUR";"39"
"88212128";"Starter";"PowerMax";"4543";"5713852365764";"108,59";"EUR";"23"
"88212130";"Starter";"PowerMax";"4543";"5713852365788";"133,86";"EUR";"1"
"88212135";"Starter";"PowerMax";"4543";"5713852365832";"58,66";"EUR";"-11"
"88212136";"Starter";"PowerMax";"4543";"5713852365849";"115,95";"EUR";"-23"
"88212138";"Starter";"PowerMax";"4543";"5713852365863";"99,49";"EUR";"8"
"88212140";"Starter";"PowerMax";"4543";"5713852365887";"66,59";"EUR";"6"

Jeg har brug for at erstatte alle negative tal i kolonnen Price (kolonne 8) med 0

På forhånd tak for hjælpen
Kim
Avatar billede ladelund Juniormester
19. august 2022 - 12:35 #1
Lige en rettelse: det er ikke kolonnen Price men Stocklevel der skal rettes. StockLevel er kolonne 8
Beklager
Kim
Avatar billede Spotgun Seniormester
19. august 2022 - 14:00 #2
Prøv med følgende:

$CsvFile = "<sti til din CSV fil>"
$Dataset = Get-Content -Path $CsvFile
$Data = ConvertFrom-Csv $Dataset -Delimiter ';'
foreach ($Item in $Data) {
    if ([int]$Item.StockLevel -lt 0) {
        $Item.StockLevel = 0
    }
}
$Data | ConvertTo-Csv -Delimiter ";" -NoTypeInformation | Out-File $CsvFile -Force
Avatar billede ladelund Juniormester
19. august 2022 - 14:29 #3
Jeg prøvede med følgende:

$CsvFile = "O:\Lagertal_til_kunder\Autodoc\myTempFile.csv"
$Dataset = Get-Content -Path $CsvFile
$Data = ConvertFrom-Csv $Dataset -Delimiter ';'
foreach ($Item in $Data) {
    if ([int]$Item.StockLevel -lt 0) {
        $Item.StockLevel = 0
    }
}
$Data | ConvertTo-Csv -Delimiter ";" -NoTypeInformation | O:\Lagertal_til_kunder\Autodoc\out.csv $CsvFile -Force

men BAT filen stopper når den kommer til kode og lukker ned.
Der kommer intet output.
Avatar billede ladelund Juniormester
19. august 2022 - 14:33 #4
Rettede koden:
$CsvFile = "O:\Lagertal_til_kunder\Autodoc\myTempFile.csv"
$Dataset = Get-Content -Path $CsvFile
$Data = ConvertFrom-Csv $Dataset -Delimiter ';'
foreach ($Item in $Data) {
    if ([int]$Item.StockLevel -lt 0) {
        $Item.StockLevel = 0
    }
}
$Data | ConvertTo-Csv -Delimiter ";" -NoTypeInformation | Out_File $CsvFile -Force

med samme resultat som før.
Avatar billede ladelund Juniormester
19. august 2022 - 14:34 #5
det går squ godt :-)

selvfølgelig Out-File og ikke Out_File
Avatar billede ladelund Juniormester
19. august 2022 - 14:54 #6
Nu virker det.
Jeg havde lavet nogle typo fejl.

Tak for hjælpen Spotgun.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester