【发布时间】:2021-01-19 11:51:53
【问题描述】:
我有一个每天备份的文件,示例如下:
在删除除最新之外的所有内容之前:
Folder C:\Backup\
File :
Backup1-Database-A.bak | 1/10/2020 1:24 PM
Backup2-Database-A.bak | 2/10/2020 1:24 PM
Backup1-Database-B.bak | 1/10/2020 1:24 PM
Backup2-Database-B.bak | 2/10/2020 1:24 PM
Backup2-Database-B.bak | 3/10/2020 1:24 PM
删除除最新之外的所有内容后的所需状态:
Folder C:\Backup\
File :
Backup2-Database-A.bak | 2/10/2020 1:24 PM
Backup2-Database-B.bak | 3/10/2020 1:24 PM
如何为每个数据库保留最新的文件?
我正在使用这个脚本,但它删除了所有.bak,所以数据库 A 的备份消失了,但我想为每个数据库保留最新的。
$mydays = (Get-Date).AddDays(-7)
$path = "C:\Backup\"
Get-Childitem -path $path -recurse -force | Where-Object { !$_.PSIsContainer -and $_.name -like "*.bak" -and $_.LastWriteTime -lt $mydays} | Remove-Item -Force
【问题讨论】:
-
如果您只想要最后(一)天的价值,请尝试
$mydays = (Get-Date).AddDays(-1)。 -
@jfrmilner 是的,我试过 -1 。但它会删除所有文件,而不是保留最新的文件,也许我在类似名称的脚本上错了
-
而不是测试某个日期...只需按日期排序并仅保留最新的日期。 [咧嘴]
-
顺便说一句,使用
-Filter '*.bak'比使用$_.name -like "*.bak"更有效。如果您的 PowerShell 版本是 3.0 或更高版本,请使用开关-File而不是!$_.PSIsContainer -
@lass - 看起来 mklement0 在他的回答中使用
Group-Object命令涵盖了这一点。 [咧嘴]
标签: powershell file backup