如何编写PowerShell脚本实现各子目录独立保留最新5个备份文件
PowerShell 分文件夹清理过期备份脚本
调整后可运行代码
# 配置项:备份根目录路径、每个文件夹需保留的最新文件数量 $rootPath = "C:\temp" $keepCount = 5 # 获取根目录下所有层级的子文件夹 $subFolders = Get-ChildItem -Path $rootPath -Directory -Recurse foreach ($folder in $subFolders) { # 读取当前文件夹下的所有文件,按创建时间倒序排列(最新的排在最前) $files = Get-ChildItem -Path $folder.FullName -File | Sort-Object -Property CreationTime -Descending # 跳过前N个最新文件,剩余文件直接删除 # 测试阶段请保留-WhatIf参数,仅输出待删除文件列表不执行实际删除,确认无误后删除该参数即可 $files | Select-Object -Skip $keepCount | Remove-Item -Force -WhatIf } # 若需同时清理根目录本身存储的备份文件,取消注释下方代码即可 <# $rootFiles = Get-ChildItem -Path $rootPath -File | Sort-Object -Property CreationTime -Descending $rootFiles | Select-Object -Skip $keepCount | Remove-Item -Force -WhatIf #>
注意事项
- 若备份文件判断规则需以修改时间为准,将代码中的
CreationTime替换为LastWriteTime即可 - 若FTP目录为网络共享路径,建议填写UNC格式路径(如
\\10.0.0.5\ftp_backup),避免定时任务执行时读取不到映射盘 - 定时任务执行指令参考:
powershell.exe -ExecutionPolicy Bypass -NoProfile -File "你的脚本完整存储路径.ps1",运行账户需分配对应目录的读写删除权限
内容的提问来源于stack exchange,提问作者ar3y0udumb
相关产品推荐
相关产品推荐

