powershell - PowerShell删除lastwrite超过30个项目/文件夹排除多个子文件夹
问题描述
我有一个目录,我需要删除所有过期 30 天的文件和文件夹,但保留子文件夹中的所有内容C:\TEST\A
和C:\TEST\B
这是文件夹结构:
|-C:\TEST
\-C:\TEST\A
\-C:\TEST\A\A1
\-C:\TEST\A\A2.txt
\-C:\TEST\B
\-C:\TEST\B\B1
\-C:\TEST\B\B2.txt
\-C:\TEST\C
\-C:\TEST\C\C1
\-C:\TEST\C\C2.txt
\-C:\TEST\D.doc
\-C:\TEST\E.txt
这就是我现在所拥有的,我尝试过“排除”和“不喜欢”,但都不起作用:
$before=(Get-Date).AddDays(-30)
$exfolder=('C:\TEST\A*' , 'C:\TEST\B*')
Get-ChildItem -path 'C:\TEST' -Recurse |
Where-Object {($_.LastWriteTime -lt $before ) -and ( $_.FullName -notlike $exfolder)} |
Remove-Item -force -Recurse
Get-ChildItem -path 'C:\TEST' -Recurse -Exclude $exfolder |
Where-Object { $_.LastWriteTime -lt $before } |
Remove-Item -force -Recurse
解决方案
您可以链接两个Get-ChildItem
调用,第一个用于排除文件夹,第二个用于递归获取文件:
Get-ChildItem -Path C:\folder -Exclude A,B | Get-ChildItem -Recurse | Where-Object [...]
推荐阅读
- spring-boot - 如何跟踪用户活动并将其发送到数据库
- regex - 如果字符串包含列表中的单词,则从字符串中提取单词
- excel - 如何强制 Active-X 组合框从溢出的数组中刷新其下拉列表
- excel - VBA - 根据工作表标签颜色更改特定单元格值的字体颜色
- ruby - 如何从模块下的目录中移动所有类?
- keras - 相同的 LSTM(GRU)实现不同的结果(pytorch 和 keras)
- rx-java - 根据发射项的索引将 Observable 拆分为多个 Observable
- javascript - 打字稿智能感知与 node.js readdir
- dataframe - “unicodeescape”编解码器无法解码位置 0-1 中的字节:格式错误的 \N 字符转义
- javascript - 无法读取 null 的属性“hasAttribute”