我有300个CSV文件都在一个目录中。
我想从每个CSV中获得一个特定的标准,并使用PowerShell将其放入另一个CSV中。
这是我的电话,但是好像打不通。
Get-ChildItem -Filter "*Results.csv" | Get-Content | Where-Object {$_.NAME -eq "Cage,Johnny"} | Add-Content "test.csv"
我用gci过滤了我在目录中想要的特定csv,使用Get-Content和NAME列中的值为Johnny Cage获得了每个csv的内容,并将内容添加到test.csv文件中,但不起作用。任何帮助都太好了!
您需要将CSV文本反序列化为具有可引用属性的对象。然后你可以比较Name
的性质。如果您的所有csv文件具有相同的头,则可以执行以下操作。
Get-ChildItem -Filter "*Results.csv" | Foreach-Object {
Import-Csv $_.FullName |
Where-Object {$_.NAME -eq "Cage,Johnny"} } |
Export-Csv "test.csv"
如果您的CSV文件包含不同的头,那么您有几个选项。第一,您可以使用所有文件中存在的所有可能的头创建输出CSV(或者只使用您想要的头,只要它们在所有文件中相同)。第二,您可以只输出您的数据行,并有一个破碎的CSV。
# Broken CSV Approach
Get-ChildItem -Filter "*Results.csv" | Foreach-Object {
Import-Csv $_.FullName |
Where-Object {$_.NAME -eq "Cage,Johnny"}} | Foreach-Object {
$_ | ConvertTo-Csv -Notype | Select-Object -Skip 1
} | Add-Content test.csv
我想我明白了。
Get-ChildItem -Filter *Results.csv |
ForEach-Object{
Import-Csv $_.NAME | ? { $_.EMPLID -eq "Cage,Johnny"}
} | Export-Csv "test.csv"