![我想使用 Powershell 删除 30 天前的文件夹 + 子文件夹,文件夹按日期保存](https://linux22.com/image/752860/%E6%88%91%E6%83%B3%E4%BD%BF%E7%94%A8%20Powershell%20%E5%88%A0%E9%99%A4%2030%20%E5%A4%A9%E5%89%8D%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%20%2B%20%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E6%96%87%E4%BB%B6%E5%A4%B9%E6%8C%89%E6%97%A5%E6%9C%9F%E4%BF%9D%E5%AD%98.png)
我想删除 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))}