【发布时间】:2013-01-06 08:55:45
【问题描述】:
举个简单的例子,假设我有一个文件夹Root,其中包含三个文件夹;文件夹 1、文件夹 2 和文件夹 3。这些文件夹中的每一个(包括Root)都有一堆文件,包括.pdb 文件。我想使用PowerShell Get-ChildItem cmdlet 返回所有文件夹中的所有文件(包括Root),除了Folder2 中的.pdb 文件。如果我使用:
Get-ChildItem -Path C:\Root -Recurse -Exclude *.pdb
然后我取回所有目录中的所有非 .pdb 文件,这与我想要的很接近。所以我假设以下内容可以实现我想要的:
Get-ChildItem -Path C:\Root -Recurse -Exclude \*\\Folder2\\*.pdb
但这并不排除 Folder2(或任何其他文件夹)中的任何 pdb 文件。我已经为-Exclude 过滤器尝试了几种变体,例如Folder2\\\*.pdb,但我无法让它工作。事实上,即使使用\*\\\*.pdb 似乎也没有任何作用;没有 .pdb 文件会从任何文件夹中排除。
因此,通配符似乎不能用于目录,只能用于文件名,但我认为我只是做错了什么。我找到了this article explaining the wildcard and range operators,但不幸的是它没有讨论将它们与目录名称一起使用;只有文件名。
【问题讨论】:
标签: powershell directory get-childitem