我有下面的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