我有下面的PowerShell脚本,它会将当前月份的所有文件压缩成一个zip文件作为zip文件名(June 2017.7z)。如何使用7Zip按月压缩文件
# set folder path
$dump_path = "C:\Users\Desktop\02_2017"
# set min age of files
$max_days = "-30"
# get the current date
$curr_date = Get-Date
# determine how far back we go based on current date
$zip_date = $curr_date.AddDays($max_days)
# filter files
$files = Get-ChildItem $dump_path | Where-Object { ($_.LastWriteTime -lt $zip_date) -and ($_.psIsContainer -eq $false) }
$groups = Get-ChildItem $dump_path |
Where-Object { ($_.LastWriteTime -lt $zip_date) -and ($_.psIsContainer -eq $false) } |
group {"{0:MMMM} {0:yyyy}" -f $_.CreationTime}
ForEach ($group in $groups) {
ForEach($file in $group.Group){
& "C:\Program Files\7-Zip\7z.exe" u -mx9 -t7z -m0=lzma2 ($group.Name + ".7z") $file.FullName
Remove-Item $file.FullName -exclude *.ps1
}
}
如何修改脚本,使其能够分别压缩每月创建的所有文件?例如,aaa1,aaa2,aaa3将压缩到aug_2016.7z,bbb1,bbb2,bbb3将压缩到feb_2017.7z等等,然后删除归档文件。
8/29/2016 11:09 PM 88583 aaa1.log
8/30/2016 6:06 AM 88590 aaa2.log
8/30/2016 7:07 AM 88586 aaa3 .log
2/1/2017 6:03 AM 179412 bbb1.log
2/1/2017 7:03 AM 179285 bbb2.log
2/1/2017 8:03 AM 179418 bbb3.log
5/3/2017 6:31 PM 95764 ccc1.log
5/3/2017 8:33 PM 95605 ccc2.log
5/3/2017 10:34 PM 95391 ccc3.log
谢谢你的帮忙。
编辑: 添加Remove-Item $ file.FullName -exclude * .ps1删除归档文件。
你的脚本看起来在过去的30天,是你想要什么?或者你想按月份(Jun,Jul等)? – TheIncorrigible1
TheIncorrigible1,谢谢你指出。我需要归档所有超过30天的文件,并在归档后删除文件。这个脚本文件将每月执行一次。 – Mixer