以下のPowerShellスクリプトがあります。すべてのファイルをzipファイル(6月2017.7z)として現在の月のzipファイルに圧縮します。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
ありがとうございました。
EDIT: Remove-Item $ file.FullName -exclude * .ps1を追加してアーカイブファイルを削除しました。
あなたのスクリプトは、過去30日間に見えるあなたが何を意図していることでしょうか?月(6月、7月など)で欲しいですか? – TheIncorrigible1
TheIncorrigible1、それを指摘してくれてありがとう。 30日以上経過したすべてのファイルをアーカイブし、アーカイブ後にファイルを削除する必要があります。このスクリプトファイルは毎月実行されます。 – Mixer