我之前问过一个问题,如何遍历目录结构并在每个子目录中保留文件的 7 个最新副本。下面的脚本是创建的脚本,它运行良好,但仅适用于 1 个目录。我需要遍历整个目录并在每个子目录中保留 7 个最新文件。
为了测试,我在 C:\Customer 下创建了一个目录结构,其中包含 Test1、Test2、Test3 子目录。然后,我在每个目录(包括顶级 C:\Customer)中创建了 12 个测试文件。这些文件被命名为 Test1_Report_.txt - Test12。当我运行下面的脚本时,它删除了顶层 Test1、Test2 中的所有文件,并在 Test3 中保留了 7 个最新副本。我在这里缺少什么?任何帮助将不胜感激。
$path = "C:\Customer"
$files = Get-ChildItem -Path $path -Recurse | Where-Object {-not $_.PsIsContainer} |where{$_.name -like "*_Report_*"}
$keep = 7
if ($files.Count -gt $keep) {
$files |Sort-Object CreationTime |Select-Object -First ($files.Count - $keep)| Remove-Item -Force
}
未经测试,但我认为这将满足您的需要。这将处理所有目录并在每个子目录中保留 7 个最新文件。
$path = "C:\Customer"
$keep = 7
$dirs = Get-ChildItem -Path $path -Recurse | Where-Object {$_.PsIsContainer}
foreach ($dir in $dirs) {
$files = Get-ChildItem -Path $dir.FullName | Where-Object {-not $_.PsIsContainer -and $_.name -like "*_Report_*"}
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime | Select-Object -First ($files.Count - $keep) | Remove-Item -Force
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)