好的,我的代码是明智的:
?_switch_user=_exit
这会将所有文件的所有数据合并到一个合并文件中,但我需要一个额外的项目,我需要拉出单个文件的名称并将其附加到文件的第一列,以获取多个文件,数百个一次。
答案 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