我想从30天以下的文件夹结构中删除所有类型的文件。所以我在下面的PowerShell脚本中使用过。但这并不删除任何文件。
PowerShell脚本:
Get-ChildItem –Path "C:\Users\VJ\Documents\MainDir" –Recurse | Where-Object { $_.CreationTime –lt (Get-Date).AddDays(-30) } | Remove-Item
文件夹结构:
MainDir
|
SubDir1 -> Folder1 -> Folder2 -> Zip/CSV files
SubDir2 -> Folder1->.txt files
|
Folder2 -> .txt files
最终结果应该是从所有文件夹(MainDir的子文件夹)删除的所有类型的文件。
答案 0 :(得分:1)
我认为您正在混淆属性CreationTime和LastWriteTime。
如果您只是将文件(旧)复制到结构中的目录之一,则CreationTime
是文件复制到那里的日期和时间,可以是今天。但是,LastWriteTime
属性显示了文件的最后写入日期和时间。
尝试:
$refDate = (Get-Date).AddDays(-30)
Get-ChildItem -Path "C:\Users\VJ\Documents\MainDir" -Recurse -File |
Where-Object { $_.LastWriteTime -lt $refDate } |
Remove-Item -Force
如果您使用的PowerShell版本低于3.0,请使用:
Get-ChildItem -Path "C:\Users\VJ\Documents\MainDir" -Recurse |
Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt $refDate } |
Remove-Item -Force
此外,请检查并重新输入破折号,因为它们可能看起来像普通的连字符,实际上它们是EN Dashes(十六进制值2013;十进制8211)
希望有帮助
答案 1 :(得分:0)
尝试一下:
Get-ChildItem -Path "C:\Users\VJ\Documents\MainDir" -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime –lt (Get-Date).AddDays(-30) } | Remove-Item -Force