我试图删除给定文件夹的子文件夹中的所有文件,而不删除子文件夹本身。我尝试了各种示例,但它们没有达到我的预期。
我尝试协商的文件树的基本结构是:
C:\Backups\Subfolder1 C:\Backups\Subfolder2 C:\Backups\Subfolder3
and I am using the following code:
$limit = (Get-Date).AddDays(-14)
$path = "C:\Backups"
Get-ChildItem -Path $path -Recurse -Force |
Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } |
Remove-Item -WhatIf
我发现尽管使用了 -Recurse
标志,但子目录中的文件仍被忽略,尽管 C:\Backups 目录中的所有文件都包含在内。如果我删除 !$_.PSIsContainer
子句,则包含子文件夹中的文件,但所有目录也包含在内。
谁能告诉我如何将文件包含在子文件夹中,同时仍然忽略子文件夹本身?
最佳答案
如果您使用的是 powershell 3.0,则只需使用 -File
开关即可:
$limit = (Get-Date).AddDays(-14)
$path = "C:\Backups"
Get-ChildItem -Path $path -File -Recurse | where { $_.LastWriteTime -lt $limit } | Remove-Item
关于powershell - 删除子文件夹中超过 x 天的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39575887/