Изменить и добавить данные в файл CSV - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть скрипт, который должен посмотреть в CSV-файл и изменить его.Мой файл выглядит следующим образом:

"mydata","module1","module2","module3","module4","module5"
"kk-ll","module1","","module3","",""
"kk-pp","module1","","module3","",""  

Если данные в столбце mydata существуют: измените значение в столбце $Module.
Если его нет: добавьте новую строку вфайл.

Код, который я написал для первой части, в порядке, для второй части (обновление файла) он не работает.

$ExistingCSV = Import-Csv MyCsv.csv
if ($ExistingCSV.mydata -eq "$LOT-$WID") {
    $ExistingCSV | ForEach-Object {
        if ($_.mydata -eq "$LOT-$WID") {
            $_.$Module = $Module
        }
    }

    $ExistingCSV | Export-Csv $ProgressLogPath\$LOT.csv -NoTypeInformation
} else {
    $ExistingCSV.mydata = "$LOT-$WID"
    $ExistingCSV.$Module = $Module
    Add-Content $ExistingCSV -Value $_.Lot_WaferID $_.$Module $_.ScriptLogPath

    $ExistingCSV | Export-Csv $ProgressLogPath\$LOT.csv -NoTypeInformation
}

1 Ответ

0 голосов
/ 21 февраля 2019

Я бы использовал -contains вместо -eq, но, поскольку операторы PowerShell работают как перечислители, последние также должны работать в вашем случае.

Если совпадение найдено, измените существующие данные и экспортируйтерезультат обратно в CSV.В противном случае все, что вам нужно сделать, - это создать пользовательский объект с данными, которые вы хотите добавить, и добавить их в CSV.

$csv = 'C:\path\to\your.csv'

$ExistingCSV = Import-Csv $csv
if ($ExistingCSV.mydata -contains "$LOT-$WID") {
    foreach ($row in $ExistingCSV) {
        if ($row.mydata -eq "$LOT-$WID") {
            $row.$Module = $Module
        }
    }
    $ExistingCsv | Export-Csv $csv -NoType
} else {
    $obj = New-Object -Type PSObject -Property @{
        'mydata'  = "$LOT-$WID"
        'module1' = $null
        'module2' = $null
        'module3' = $null
        'module4' = $null
        'module5' = $null
    }
    $obj.$Module = $Module
    $obj | Export-Csv $csv -NoType -Append
}

Заменить $null тем значением, которое должны иметь поля moduleX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...