循环遍历子文件夹,并在其中合并文本文件-将合并的文件输出到文件夹 [英] Loop Through Subfolders And Combine Text files Within - Output Combined File To a Folder

查看:100
本文介绍了循环遍历子文件夹,并在其中合并文本文件-将合并的文件输出到文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个子文件夹目录.每个文件中都包含文本文件.我正在尝试合并在每个子文件夹中找到的文件.

I have a directory of subfolders. Each one contains text files within it. I am trying to combine the files found in each subfolder.

示例:

子文件夹1→ a.txt + b.txt + c.txt → SubFolder1Merged.txt
子文件夹2→ x.txt + y.txt + z.txt → SubFolder2Merged.txt

SubFolder 1 → a.txt + b.txt + c.txt → SubFolder1Merged.txt
SubFolder 2 → x.txt + y.txt + z.txt → SubFolder2Merged.txt

我已引用此线程.

这是我到目前为止所拥有的:

This is what I have so far:

$startingDir = "C:\Users\WP\Desktop\TextFiles"

function CombineLogs {
  param([string]$startingDir)

  dir $startingDir -Filter *.txt | Get-Content |
    Out-File (Join-Path $startingDir COMBINED.txt)  

  dir $startingDir | ?{ $_.PsIsContainer } | %{ CombineLogs $_.FullName }
}

CombineLogs 'C:\Users\WP\Desktop\CombinedTextFiles'  #output the combined text files here

我在CombinedTextFiles中生成了一个combined.txt-但没有合并单个文件. 文件也为空.

I get a combined.txt generated in CombinedTextFiles - but not individual files merged. Also the file is empty.

我只是想遍历每个子文件夹,合并每个文件夹中的文本文件,然后输出到我的CombinedTextfiles文件夹.

I simply want to loop through each subfolder, merge the text files within each folder, then output to my CombinedTextfiles Folder.

推荐答案

function CombineLogs
{
  param([string] $startingDir)

  $outputFile = (Split-Path $startingDir -Leaf) + "COMBINED.txt"

  dir $startingDir -Filter *.txt |
      Get-Content | 
         Out-File (Join-Path $outputDir $outputFile)  

  dir $startingDir |?{ $_.PsIsContainer } | %{ CombineLogs $_.FullName }
}

$outputDir ='C:\Users\WP\Desktop\CombinedTextFiles' # output the combined text files here
CombineLogs "C:\Users\WP\Desktop\TextFiles"

以上代码段可以解决TextFilesCOMBINED.txtNewCOMBINED.txt,但是在下一种情况下不能解决ABCCOMBINED.txtxyzCOMBINED.txt:

Above code snippet would solve TextFilesCOMBINED.txt and NewCOMBINED.txt however does not solve ABCCOMBINED.txt nor xyzCOMBINED.txt in next scenario:

C:\Users\WP\Desktop\TextFiles\ABC\ABC
C:\Users\WP\Desktop\TextFiles\ABC\xyz\ABC
C:\Users\WP\Desktop\TextFiles\New
C:\Users\WP\Desktop\TextFiles\xyz\ABC

这篇关于循环遍历子文件夹,并在其中合并文本文件-将合并的文件输出到文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆