0

我已经为此奋斗了太久,希望您能提供帮助。

我有一个 CSV,我需要为其添加一些值,最好使用 Powershell。我需要添加标题行和一列具有固定文本值。

我的 CSV 在做任何事情之前看起来像这样:

contact-email;contact-sms;contact-firstname
test@example.com;+3580000000;Mike

我需要它看起来像这样:

contact-email;contact-sms;contact-firstname;order-site
test@example.com;+3580000000;Mike;Finland

所以需要添加最后一列“order-site”,并且该列中的每一行都应该有一个值“Finland”。

到目前为止,我已经编写了这个 Powershell 脚本,我完成了一个教程:

$file = Import-Csv E:\Raportit\SALES\SALES_TD_S01.csv -Delimiter "`t" -Encoding Default -Header "contact-email;contact-sms;contact-firstname"

foreach($c in $file) {

    Add-Member -Input $c -MemberType NoteProperty -Name "order-site" -Value "Finland"

}

$file | Export-Csv -Path "C:\Temp\test.csv" -Encoding Default -NoTypeInformation

但不幸的是,这使得 CSV 看起来像这样:

"contact-email;contact-sms;contact-firstname","order-site"
"test@example.com;+3580000000;Mike","Finland"

对于我对此文件的用例,它需要看起来像第一个应该看起来像的示例,没有双引号和用分号 (;) 分隔的列。只要输出如下所示,双引号就可以了:

"contact-email;contact-sms;contact-firstname;order-site"
"test@example.com;+3580000000;Mike;Finland"

我提前非常感谢你们,我知道这可能是一项超级简单的任务,但我就是无法绕开它来挽救我的生命。

4

1 回答 1

0
  1. 如果文件有标题:
Import-Csv -Path 'E:\Raportit\SALES\SALES_TD_S01.csv' -Delimiter ';' | 
    Select-Object *, @{Name = 'order-site'; Expression = {'Finland'}} |
    Export-Csv -Path "C:\Temp\test.csv" -Delimiter ';' -NoTypeInformation
  1. 如果文件没有标题:
$headers = 'contact-email','contact-sms','contact-firstname'
Import-Csv -Path 'E:\Raportit\SALES\SALES_TD_S01.csv' -Delimiter ';' -Header $headers | 
    Select-Object *, @{Name = 'order-site'; Expression = {'Finland'}} |
    Export-Csv -Path "C:\Temp\test.csv" -Delimiter ';' -NoTypeInformation

CSV 输出:

"contact-email";"contact-sms";"contact-firstname";"order-site"
"test@example.com";"+3580000000";"Mike";"Finland"
于 2021-03-22T16:14:57.033 回答