$retentionDays = 4 ## 4日分を保持 $backupRootPath = "I:\Share01_Backup" $fromPath = "E:\Share01\" $now = Get-Date $DateFolder = $now.ToString("yyyyMMdd") $limitDate = ($now.AddDays(-$retentionDays)).ToString("yyyyMMdd") ## 削除開始日付を得る $toPath = ("{0}\{1}" -f $backupRootPath, $DateFolder) $logPath = ("{0}_robocopy.log" -f $toPath) # 日付8桁フォルダを作る New-Item -path $backupRootPath -Name $DateFolder -ItemType Directory -Force # 日付フォルダにコピーを取る ROBOCOPY $fromPath $toPath * /MIR /NP /NDL /FP /BYTES /LOG:$logPath # 削除開始日付かそれより古い日付のフォルダ・ログを削除する Get-ChildItem -Path $backupRootPath -Directory | Where-Object {$_.Name -match '^\d{8}$' -and $_.Name -le $limitDate} | Foreach-Object { Remove-Item -Path $_.FullName -Recurse -Force Remove-Item -Path ("{0}_robocopy.log" -f $_.FullName) -Recurse -ErrorAction Ignore }