我有大约 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(使用前将#替换为@)