我在主文件夹中有多个子文件夹,每个子文件夹中都有许多文件。我想保持某些文件夹的内容不变,并删除其余部分的内容。
我测试了代码,但是它在7天前删除了所有子文件夹中的文件。
$Path="C:\Shreyas1"
$NumberOfDays="-7"
$CurrentDate=Get-Date
$DeleteDays=$CurrentDate.AddDays($NumberOfDays)
## Heading
##$excludes="Specs"
Get-ChildItem $Path -Exclude $excludes -Recurse |
Where-Object{($_.LastWriteTime -lt $DeleteDays )} |
Remove-Item
答案 0 :(得分:0)
您应该尝试在Get-ChildItem
cmdlet之后使用相同的“ Where”语句,以过滤出特定的文件名。尝试这样的事情:
Get-ChildItem $Path -Recurse | Where-Object {$_.Name -notlike "*$excludes*" -and $_.LastWriteTime -lt $DeleteDays}
首先运行该命令以确保获得所需的内容,然后可以像在OP中所做的那样通过管道传输到Remove-item -Confirm:$false
。编辑:-Confirm:$false
开关意味着它不会提示您确认是否要删除文件,它只会删除。这就是为什么您要首先运行Get-ChildItem
。