我想删除 30 天前的文件夹及其所有以“dba_20200312-0500311 - 123”开头的子文件夹
# $curDateTime = Get-Date -Format yyyyMMdd-HHmmss, folder save in this date format
$mydays = (Get-Date).AddDays(30)
$path = "E:\share\New folder\"
Get-Childitem -path $path -recurse -force | Where-Object { !$_.LastWriteTime -lt $mydays} | Remove-Item -Recurse -Force -confirm:$false -Verbose
我正在使用这个脚本,但它没有删除按日期保存的文件夹名称。
答案1
首先,您在获取日期的 AddDays 方法中缺少“-”号。
为了匹配文件名和最后写入时间,您需要调整 Where-Object 条件,在将其传递给 Remove-Item 之前,尝试此表达式是否与您需要删除的文件匹配:
Get-ChildItem -Path "E:\share\New folder\" -Recurse | Where-Object {$_.PSIsContainer -eq $true -and $_.Name -match "dba_20200312-0500311" -and $_.LastWriteTime -gt ((get-date).AddDays(-30))}