我有备份过程,它会复制文件并在最后添加系统时间。日期戳表示通过FTP(ddMMYYYYhhmmss)接收文件的时间。
fileName1.ZIP02062015090653
fileName1.ZIP01062015090653
fileName1.ZIP31052015090653
fileName1.ZIP29052015090653
fileName1.ZIP28052015090653
fileName1.ZIP21052015090653
fileName2.ZIP02062015090653
fileName3.ZIP02062015090653
reportName1.PDF02062015090653
reportNameX.TXT02062015090653
etc..
我需要脚本来保存每个文件的5个最新版本。
i.e. fileName1.ZIP21052015090653 <- this should get deleted.
我正在尝试使用下面的脚本,但它会在第5个文件后删除所有内容..
gci C:\temp\ -Recurse| where{-not $_.PsIsContainer}| sort CreationTime -desc|
select -Skip 5| Remove-Item -Force
如果脚本使用fileName,dateModified,creationTime或DateStamp,我不介意 - 我希望能够保留每个文件的5个版本并吹走最旧版本。
答案 0 :(得分:0)
试试这个:
gci C:\temp\ -Recurse |
where{-not $_.PsIsContainer} |
Group-Object basename |
foreach {
$_.Group |
sort CreationTime -Descending |
Select -Skip 5 |
foreach { Remove-Item $_.fullname -Force -WhatIf }
}
这将按基本名称对文件进行分组,然后在每个组中进行排序/删除 如果结果看起来正确,请删除-Whatif并重新运行以实际删除文件。