如何在PowerShell中同时使用多组Include/Exclude筛选条件?
解决方案
直接用Get-ChildItem的-Include和-Exclude没法实现这种“分组绑定”的筛选逻辑——这两个参数是全局生效的,所有匹配-Include的文件都会被统一应用-Exclude的排除规则,没法让不同的包含关键词对应不同的排除条件。
正确的做法是先用Get-ChildItem获取目标目录的文件,再通过Where-Object分别定义三组独立的筛选规则:每组规则内部是“包含指定关键词 + 不包含对应排除词”的逻辑,三组规则之间用-or连接(满足任意一组即可):
Get-ChildItem -Path Path/To/Folder | Where-Object { # 规则1:文件名包含Basic_TShirt_Men,且不包含black或purple ($_.Name -like "*Basic_TShirt_Men*" -and $_.Name -notlike "*black*" -and $_.Name -notlike "*purple*") -or # 规则2:文件名包含Basic_Polo_Shirt,且不包含blue ($_.Name -like "*Basic_Polo_Shirt*" -and $_.Name -notlike "*blue*") -or # 规则3:文件名包含Basic_Shirt_Women,且不包含pink ($_.Name -like "*Basic_Shirt_Women*" -and $_.Name -notlike "*pink*") }
补充说明
- 如果需要递归筛选子目录里的文件,给
Get-ChildItem加上-Recurse参数即可。 - 若只想筛选文件而非目录,添加
-File参数可以排除目录结果。
内容的提问来源于stack exchange,提问作者dc09
相关产品推荐
相关产品推荐

