如何使用PowerShell GetChildItem排除根目录.xml文件,仅保留子目录的该类型文件
解决方案
方法一:递归遍历后过滤根目录文件
使用-Recurse遍历所有层级的.xml文件,再通过Where-Object排除根目录下的文件:
Get-ChildItem -Recurse -Filter *.xml | Where-Object { $_.DirectoryName -ne $PWD.Path }
$PWD.Path代表当前工作目录的绝对路径,通过对比文件的DirectoryName,筛选出不在根目录的.xml文件。
方法二:直接遍历子文件夹中的文件
先获取所有子目录,再逐个查找目录内的.xml文件,从源头上避免获取根目录文件:
Get-ChildItem -Directory | ForEach-Object { Get-ChildItem -Path $_.FullName -Filter *.xml }
-Directory参数仅返回当前目录下的子文件夹,再通过ForEach-Object遍历每个子文件夹,获取其中的.xml文件,无需额外过滤。
补充说明
Get-ChildItem的-Include/-Exclude参数主要用于匹配文件/文件夹名称,无法直接根据文件所在的目录层级进行筛选,因此需要结合上述两种方式实现需求。
内容的提问来源于stack exchange,提问作者Mort
相关产品推荐
相关产品推荐

