powershell-按列将csv拆分为多个csv

powershell-按列将csv拆分为多个csv,powershell,Powershell,我有这样的.csv: 但当然还有更多的台词。。(很抱歉,我像图片一样添加了它,因为无法正确格式化文本) 我希望有4个.csv文件,每个列都单独包含,所以在x.csv中,我只会有第一列的数据。在y.csv中,我只有第二列的数据(它们之间用“;”分隔) 到目前为止,我已经有了这段代码,但我甚至不能循环通过列(循环通过行工作…) 感谢您的帮助它应该是直截了当的: 1.)使用导入csv将数据导入变量,例如$tmp(别忘了正确设置delimter) 2.)使用$tmp选择属性|选择对象-属性位置x 3.

我有这样的.csv:

但当然还有更多的台词。。(很抱歉,我像图片一样添加了它,因为无法正确格式化文本)

我希望有4个.csv文件,每个列都单独包含,所以在x.csv中,我只会有第一列的数据。在y.csv中,我只有第二列的数据(它们之间用“;”分隔)

到目前为止,我已经有了这段代码,但我甚至不能循环通过列(循环通过行工作…)


感谢您的帮助

它应该是直截了当的:

1.)使用导入csv将数据导入变量,例如$tmp(别忘了正确设置delimter)

2.)使用$tmp选择属性|选择对象-属性位置x


3.)使用Export csv(可能还有参数notypeinformation)导出所选数据。

您可以执行以下操作,允许使用任何可能的列名:

$csv = Import-Csv -Path input.csv -Delimiter ';'
$properties = (Get-Member -InputObject $csv[0] -MemberType Properties).Name
foreach ($property in $properties) {
    $csv | Select-Object @{n=$property;e={$_.$property}} |
        Export-Csv -LiteralPath "$property.csv" -NoTypeInformation -Delimiter ';'
}

此处需要计算属性,因为属性名称包含字符。在某些命令上可能需要使用
-LiteralPath
开关,因为还有通配符。

oh man。。你写的东西我永远写不出来-谢谢你100000000次!现在我可以研究代码来理解它:)我还尝试了一些其他代码,并且认为它不起作用,因为文件名包含[],但它在您的代码中起作用,所以coool。。顺便说一句,只是为了未来的咖喱-原始csv只有干净的文本/数字和“;”符号,但新csv的每一行都有“”符号,比如“0.2454”,而不仅仅是0.2454-有没有什么特殊的方法可以让干净的行没有“”符号,或者这只是ps的工作方式?不过还是要谢谢你,伙计!我明白了;)由于特殊的文件名
$file=“.\PositionX``[mm``].csv“获取内容$file”| Foreach{$\u-replace'',“”}|设置内容”.\oxxx.csv“
$csv = Import-Csv -Path input.csv -Delimiter ';'
$properties = (Get-Member -InputObject $csv[0] -MemberType Properties).Name
foreach ($property in $properties) {
    $csv | Select-Object @{n=$property;e={$_.$property}} |
        Export-Csv -LiteralPath "$property.csv" -NoTypeInformation -Delimiter ';'
}