带有Powershell的CSV操作

时间:2019-04-04 14:23:33

标签: powershell

我想使用PowerShell命令用当前日期MMddyyyy替换CSV列A的所有内容

在过去的几天里仔细研究了很多例子,但是找不到正确的答案,这对于Powershell来说是新事物,具有UNIX背景长达35年!

我想要的结果是一个新的CSV文件,其日期在第一列,然后是源CSV的所有其他列。

MMddyyyy,所有其他字段,来自原始csv

1 个答案:

答案 0 :(得分:1)

假设您的数据位于一个名为your.csv的文件中,内容如下:

ColA,ColB,ColC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC

一种有效的方法是遵循在Add Column to CSV Windows PowerShell发布的解决方案。下面是该方法之后的详细信息,您想在其中替换第一列,并使其余的列保持顺序:

Import-Csv your.csv | 
  Select-Object -Property @{n="ColA";e={get-date -f MMddyyyy}},* -ExcludeProperty ColA |
    Export-Csv new.csv -NoTypeInformation

效率较低的替代方法对每一行进行处理并进行适当的更改。这将使用新数据更新原始$file变量,但将使原始文件保持不变。 new.csv是包含所有更新的输出文件。

$file =  Import-Csv your.csv

Foreach ($row in $file) {
   $row.ColA = get-date -f MMddyyyy
}

$file | Export-Csv new.csv -NotypeInformation

现在,new.csv的内容如下:

"ColA","ColB","ColC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"