这是我系统中的模板,所以我不能在这里修改任何内容。基本上我想根据第3栏“评论”的值分成多个文件。
DeliveryType;ShippingDate;Comment;SellerSku;Requested send;05/29/16 03:10 PM;HCM - VN101YK- MK1001;EX110OTBCE8QV;3 send;05/29/16 03:1PM;HN - VN101YK;EX110OTBCE8XHY;1
我已经尝试过此代码&更改了文件名/文件夹,但它没有响应任何内容。
{{1}}
答案 0 :(得分:2)
我实际上根本不认为您需要使用Group
来执行此操作:
$CSV = Import-csv test.csv -Delimiter ';'
$CSV | ForEach-Object {
$_ | Export-CSV "$($_.comment).csv" -Append -NoTypeInformation
}
<强>解释强>
Import-CSV
导入CSV,指定文件由分号分隔(默认情况下为逗号)。ForEach-Object
循环$_
表示管道中的当前项(例如CSV中的当前行),我们可以使用.
表示法访问其属性。$( )
从双引号字符串中访问当前管道对象的.comment
属性。-Append
开关要求您使用PowerShell版本3或更高版本。 -NoTypeInformation
开关,它会阻止PowerShell在输出顶部放置不必要的对象描述注释行,如果您在Excel中打开该文件,则可能会很烦人。< / LI>
答案 1 :(得分:0)
由于以下两个原因,您的代码无效: 1.它试图默认用逗号分析csv文件分隔,而不是分号。您可以通过添加-Delimiter';'来解决此问题。 to Import-Csv cmd-let,例如: Import-Csv test.csv -Delimiter';'
以下是可行的代码:
Import-Csv test.csv -Delimiter ';' | Group-Object -Property "Comment" | Foreach-Object { $path=("C:\pathto-output-files\" + $_.Name + ".csv"); Export-Csv -InputObject $_ -Path $path -NoTypeInformation}