PowerShell GetChildItem排除基本文件夹中的文件类型,但包含子文件夹中相同的文件类型

n3schb8v  于 2022-11-10  发布在  Shell
关注(0)|答案(2)|浏览(196)

我正在尝试找到一种方法,让GetChildItem包含子文件夹中的所有.xml文件,但排除基文件夹中的.xml文件。
我的文件夹结构如下所示:

MySubFolder\IncludeThis.xml
MySubFolder\AlsoIncludeThis.xml
AnotherSubFolder\IncludeThis.xml
AnotherSubFolder\AlsoIncludeThis.xml
ExcludeThis.xml
AlsoExcludeThis.xml

我尝试过使用-Include-Exclude参数,但没有成功,因为这些参数似乎只对文件类型起作用,不能设置为只对某些文件夹起作用。
有谁知道如何让GetChildItem只从基本文件夹中过滤出.xml文件?
PS)当使用该命令时,我将不知道存在的子文件夹的名称。

t1qtbnec

t1qtbnec1#

您需要在第一步中获取子文件夹并在其中搜索XML文件,例如:


# Get list of subfolders

$folders = get-childitem -Path [path] -Directory

# Get xml files in subdirectories

$xmlFiles = get-childitem -Path $folders.fullname -Filter '*.xml' -File -recurse
mpbci0fu

mpbci0fu2#

在搜索这个问题的答案时,我想出了一种实现所需功能的方法,方法是将多个调用的结果组合到Get-ChildItem


# Find the list of all files and folders, including files in sub folders, from a directory:

$All = Get-ChildItem -Recurse

# Find a list of items to exclude from the first list:

$Exclude = Get-ChildItem *.xml

# Remove excluded items from the list of all items:

$Result = $All | Where-Object {$Exclude.FullName -NotContains $_.FullName}

# These terms can be combined into a single difficult-to-read statement:

Get-ChildItem -Recurse | Where-Object {(Get-ChildItem *.xml).FullName -NotContains $_.FullName}

相关问题