将colum添加到合并的csv文件中

时间:2016-01-13 15:46:58

标签: excel csv powershell

好的,我的代码是明智的:

?_switch_user=_exit

这会将所有文件的所有数据合并到一个合并文件中,但我需要一个额外的项目,我需要拉出单个文件的名称并将其附加到文件的第一列,以获取多个文件,数百个一次。

3 个答案:

答案 0 :(得分:0)

未经测试但是这样的事情应该这样做:

$a = "C:\Users\some.deranged.character\Desktop\SomeAwfulPlace\Checklists\C_F\*.csv"
$b = "C:\Users\some.deranged.character\Desktop\SomeAwfulPlace\Checklists\C_F\merge.csv"


Get-ChildItem $a | % { 
    Import-Csv $_.Fullname | Add-Member -MemberType NoteProperty -Name 'File Name' -Value $_.Name 
} | Export-Csv $b

答案 1 :(得分:0)

假设每个CSV文件都有相同的列标题,我倾向于使用Import-CSV而不是Get-Content,这样您就可以将CSV内容用作具有命名属性的对象数组。

然后,您需要做的就是遍历数组的每个项目并附加包含文件路径的属性,您可以使用Add-Member cmdlet执行此操作。完成后,使用Export-CSV cmdlet导出对象数组。

$directory = "C:\Users\some.deranged.character\Desktop\SomeAwfulPlace\Checklists\C_F\"
$search = $directory + "*.csv"
$exportpath = "C:\Users\some.deranged.character\Desktop\SomeAwfulPlace\Checklists\C_F\merge.csv"
$paths = get-childitem $search
$objectArrays = @()
$paths | %{ 
      $filepath = $_.fullname; 
      $objectArray = Import-CSV $filepath; 
      $objectArray | %{ 
           Add-Member -inputobject $_ -Name "SourceFile" -Value $filepath -MemberType NoteProperty}; 
      $objectArrays += $objectArray}
$objectArrays | export-csv -path $exportpath -notype

这会将SourceFile属性作为输出CSV文件中的最后一列

答案 2 :(得分:0)

好的,简化...搜索目标文件夹,管道到ForEach-Object循环(使用简写%),将文件名捕获为变量,导入CSV,使用{{添加源文件1}} cmdlet,将其转换回CSV,结束循环,管道到目标文件。

Select-Object