Powershell 将文件名附加到新列中的CSV

Powershell 将文件名附加到新列中的CSV,powershell,csv,Powershell,Csv,我有很多csv文件存储在一个目录中。 在每个csv文件中,需要通过powershell将名称添加为此列 示例 文件位置:\Export\FILENAME1.CSV 内容: 1232;Description;a1 1232;Description;a2 结果必须是: 1232;Description;a1;FILENAME1.CSV 1232;Description;a2;FILENAME1.CSV 有人能帮我吗?以下内容将在目录中的每个.CSV文件中附加一个文件名列: Get-ChildIt

我有很多csv文件存储在一个目录中。 在每个csv文件中,需要通过powershell将名称添加为此列

示例

文件位置:
\Export\FILENAME1.CSV

内容:

1232;Description;a1
1232;Description;a2
结果必须是:

1232;Description;a1;FILENAME1.CSV
1232;Description;a2;FILENAME1.CSV

有人能帮我吗?

以下内容将在目录中的每个.CSV文件中附加一个文件名列:

Get-ChildItem *.csv | ForEach-Object {
    $CSV = Import-CSV -Path $_.FullName -Delimiter ";"
    $FileName = $_.Name

    $CSV | Select-Object *,@{N='Filename';E={$FileName}} | Export-CSV $_.FullName -NTI -Delimiter ";"
}
说明:

  • 使用
    Get ChildItem
    获取名为*.csv的所有文件
  • 使用
    ForEach对象
    遍历每个文件,并使用
    Import CSV
    将其内容作为PowerShell对象加载
  • $FileName
  • 使用
    Select Object
    添加具有名称
    Filename
    $Filename
    变量值的计算属性
  • 使用
    导出CSV
    写回原始文件。
    -NTI
    (NoTypeInformation)开关用于确保不包括PowerShell对象标题行

以下内容将向目录中的每个.CSV文件追加一个文件名列:

Get-ChildItem *.csv | ForEach-Object {
    $CSV = Import-CSV -Path $_.FullName -Delimiter ";"
    $FileName = $_.Name

    $CSV | Select-Object *,@{N='Filename';E={$FileName}} | Export-CSV $_.FullName -NTI -Delimiter ";"
}
说明:

  • 使用
    Get ChildItem
    获取名为*.csv的所有文件
  • 使用
    ForEach对象
    遍历每个文件,并使用
    Import CSV
    将其内容作为PowerShell对象加载
  • $FileName
  • 使用
    Select Object
    添加具有名称
    Filename
    $Filename
    变量值的计算属性
  • 使用
    导出CSV
    写回原始文件。
    -NTI
    (NoTypeInformation)开关用于确保不包括PowerShell对象标题行

Mark Wragg的PowerShell代码有效,但我不得不将分隔符改为,而不是;以便在Excel中打开。我正试图找出如何将文件名附加到第一列而不是最后一列,因为我的文件没有相同数量的字段,所以它们不对齐。

Mark Wragg的PowerShell代码可以工作,但我必须将分隔符改为,而不是;以便在Excel中打开。我正试图找出如何将文件名附加到第一列而不是最后一列,因为我的文件没有相同数量的字段,所以它们不对齐。

我不太理解这个问题。目录中有很多CSV文件。每个CSV文件名都需要附加一个列名。这个列名是什么?是第一列名称吗?您想在文件的扩展名后面追加列名吗?在文件中,文件名需要作为列添加到文件的每一行。不管是第一列还是最后一列都可以,请看。到目前为止,您尝试了什么,遇到了哪些错误/问题?StackOverflow不是代码编写服务。理想情况下,提供一个“OK”。现在很明显,您只需要添加一个带有文件名的列。我将在测试后返回。同时,你的CSV文件是否有标题?你想在最后有一个CSV文件,还是每个文件都有一个附加的列?我不太理解这个问题。目录中有很多CSV文件。每个CSV文件名都需要附加一个列名。这个列名是什么?是第一列名称吗?您想在文件的扩展名后面追加列名吗?在文件中,文件名需要作为列添加到文件的每一行。不管是第一列还是最后一列都可以,请看。到目前为止,您尝试了什么,遇到了哪些错误/问题?StackOverflow不是代码编写服务。理想情况下,提供一个“OK”。现在很明显,您只需要添加一个带有文件名的列。我将在测试后返回。同时,你的CSV是否有标题?你想在结尾有一个单一的CSV文件,还是每个单独的文件都有额外的列?完美的答案。根据op共享的预览判断,您可能需要手动分隔CSV<代码>导入csv$\全名-分隔符“;”完美答案。根据op共享的预览判断,您可能需要手动分隔CSV<代码>导入csv$\u0.FullName-分隔符“;”您是如何理解的?您是如何理解的?