Powershell -从CSV文件中提取第一行并导出结果

rdlzhqv9  于 2023-01-28  发布在  Shell
关注(0)|答案(1)|浏览(271)

先谢谢你的帮助。
我有一个包含多个CSV文件的文件夹。我希望能够提取每个文件的第一行,并将结果存储在单独的CSV文件中。新创建的CSV文件将以第一列作为文件名,以第二列作为文件的第一行。输出应如下所示(作为导出的CSV文件):

FileName,FirstLine
FileName1,Col1,Col2,Col3
FileName2,Col1,Col2,Col3

注:
还有其他文件应该被忽略。我想代码循环通过所有CSV文件匹配的名称模式。我能够找到文件使用以下代码:

$targetDir ="C:\CSV_Testing\"
Get-ChildItem -Path $targetDir -Recurse -Filter "em*"

我还可以用下面的代码读取一个文件的第一行:

Get-Content C: \CSV_Testing\testing.csv | Select -First 1

我想我只是需要有人来帮助循环通过文件和导出结果。有人能帮助吗?谢谢

gab6jxml

gab6jxml1#

你基本上需要一个循环,来枚举每个文件,为此你可以使用ForEach-Object,然后构造你需要示例化新对象的输出,因为[pscustomobject]是最简单的选择,然后Export-Csv将这些对象转换成CSV。

$targetDir = "C:\CSV_Testing"
Get-ChildItem -Path $targetDir -Recurse -Filter "em*.csv" | ForEach-Object {
    [pscustomobject]@{
        FileName  = $_.Name
        FirstLine = $_ | Get-Content -TotalCount 1
    }
} | Export-Csv path\to\theResult.csv -NoTypeInformation

我假设文件实际上有.Csv扩展名,因此将过滤器更改为-Filter "em*.csv",如果不是这样,您可以使用过滤器,因为您目前有它。

相关问题