首页 > 解决方案 > 将一个目录中的多个文件合并为一个文件

问题描述

我的目录树视图如下:

在此处输入图像描述

我想将一个目录中的多个文件组合(或假设附加)到一个文件中。意思是,文件夹中的单个文件与组合内容。因此,每个文件夹将包含带有组合数据的单个文件。我尝试了以下方法,但是这种方法的问题是它只能在一次迭代中读取单个文件。

 get-childitem $dir -recurse | where { $_.extension -eq ".json" } | % {
    
    #Combine the files.
}

本质上,我希望在单次迭代中读取文件夹中的所有文件。并将另一个文件夹数据放入下一次迭代。在 Powershell 中推荐的方法是什么?

标签: powershelliteration

解决方案


最简单的方法是使用内部 cmdlet

$dir = 'C:\Users\Alex\Desktop\In'
$items = get-childitem  $dir -recurse -filter '*.json'

$fileOut = Join-Path $dir -ChildPath 'out.txt'

$result = @()

foreach ($item in $items) {

     $result += (Get-Content $item.FullName | ConvertFrom-Json)
    

}
$result | ConvertTo-Json | out-file $fileOut

根据您的要求和您应该使用的文件:

  • 一个数组列表,而不是用于非常大 (>>1.000) 结果数组的 powershell 数组
  • 另一个解析器,而不是非常大的单个文件的获取内容(例如 .net 方法)

但是,如果这样做可以,则无需更改任何内容。


推荐阅读