在PowerShell中使用分号拆分CSV文件
这是我系统中的模板,因此我无法在此处修改任何内容。基本上,我想根据第3列“Comment”上的值将其拆分为多个文件在PowerShell中使用分号拆分CSV文件,powershell,csv,Powershell,Csv,这是我系统中的模板,因此我无法在此处修改任何内容。基本上,我想根据第3列“Comment”上的值将其拆分为多个文件 由于以下两个原因,您的代码无法工作: 1.它试图解析csv文件,默认情况下使用逗号分隔,而不是分号。您可以通过添加-分隔符“;”来解决此问题要导入Csv cmd let,例如: 导入Csv test.Csv-分隔符“;” $是由|传递到下一个命令的对象,而不是$ 下面是可以工作的代码: Import-Csv test.csv -Delimiter ';' | Group-Objec
由于以下两个原因,您的代码无法工作: 1.它试图解析csv文件,默认情况下使用逗号分隔,而不是分号。您可以通过添加-分隔符“;”来解决此问题要导入Csv cmd let,例如: 导入Csv test.Csv-分隔符“;”
Import-Csv test.csv -Delimiter ';' | Group-Object -Property "Comment" | Foreach-Object { $path=("C:\pathto-output-files\" + $_.Name + ".csv"); Export-Csv -InputObject $_ -Path $path -NoTypeInformation}
实际上,我认为您根本不需要使用
Group
来执行此操作:
$CSV = Import-csv test.csv -Delimiter ';'
$CSV | ForEach-Object {
$_ | Export-CSV "$($_.comment).csv" -Append -NoTypeInformation
}
说明:
- 使用
导入CSV,指定文件以分号分隔(默认情况下需要逗号)Import CSV
- 将该导入的结果管道化到
循环ForEach对象
- 在循环中,
表示管道中的当前项(例如CSV中的当前行),我们可以使用$\uu
符号访问它的属性 - 获取CSV中的当前行,并将其附加到具有名称的CSV文件中。我们使用子表达式操作符
从双引号字符串中访问当前管道对象的$()
属性.comment
- 还要注意,我认为
开关要求您使用PowerShell版本3或更高版本李>-Append
- 此命令还包括
开关,该开关可阻止PowerShell将不必要的对象描述注释行放在输出的顶部,如果随后在Excel中以可见的方式打开该文件,这可能会很烦人-NoTypeInformation
Import-Csv test.csv -Delimiter ';' | Group-Object -Property "Comment" | Foreach-Object { $path=("C:\pathto-output-files\" + $_.Name + ".csv"); Export-Csv -InputObject $_ -Path $path -NoTypeInformation}
$CSV = Import-csv test.csv -Delimiter ';'
$CSV | ForEach-Object {
$_ | Export-CSV "$($_.comment).csv" -Append -NoTypeInformation
}