合并文件夹中多个文件的内容

2024-04-30

我有大约 30 个目录,其中包含 .log 文件。我想进入每个文件夹并分别合并子目录中所有文件的文本。我不想合并所有子目录中所有文件的文本。

Example

我有一个名为 Machines 的目录

in Machines\ I have

Machine2\
Machine3\
Machine4\

每个内Machine*文件夹,我有:

1.log
2.log
3.log
etc..

我想创建一个脚本来执行以下操作:

第一:进入目录Machine2并合并该目录中所有文本文件的文本 第二:进入Machine3目录并合并该目录中所有文本文件的文本。

如果只有一个文件夹,我可以使用下面的命令,但我需要它循环遍历几个子文件夹,这样我就不必在下面的命令中输入子目录。

Get-ChildItem -path "W:\Machines\Machine2" -recurse |?{ ! $_.PSIsContainer } |?{($_.name).contains(".log")} | %{ Out-File -filepath c:\machine1.txt -inputobject (get-content $_.fullname) -Append}

我认为递归解决方案效果很好。给定一个目录,抓取所有内容*.log文件并转储到COMBINED.txt。然后提取所有子目录的名称,并对每个子目录重复此操作。

function CombineLogs
{
   param([string] $startingDir)

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

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

CombineLogs 'c:\logs'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并文件夹中多个文件的内容 的相关文章

随机推荐