我正在尝试递归获取文件夹的子项。但是该文件夹包含噪声文件和文件夹(实际上,这是一个 Visual Studio 项目文件夹)。
这是我所拥有的:
$root = Get-Item C:\Projects\MyProject
$allItems = Get-ChildItem $root -Recurse -exclude "**\pkgobj\*"
Run Code Online (Sandbox Code Playgroud)
但是,$allItems仍然包含与路径匹配的文件和文件夹。
我做错了什么?
更准确地说,我想同时获取文件夹和文件,而不是指定的文件夹及其任何后代。
我也试过:
foreach($item in $allItems){
if($item.FullName -notmatch "pkgobj") {
Write-Host -ForegroundColor Green $item.FullName.Replace($root,'')
}
}
Run Code Online (Sandbox Code Playgroud)
但没有更多的成功
nix*_*xda 53
我花了一点时间来理解这个问题。这是一个棘手的问题。
-exclude仅适用于项目的基本名称(即myfile.txt),而不适用于您想要的全名
(即C:\pkgobj\myfile.txt)。所以你不能在这里使用exclude。
但是有一种解决方法是使用Fullname和-notlike
$root = "C:\Projects\MyProject"
$allitems = Get-ChildItem $root -Recurse | Where {$_.FullName -notlike "*\pkgobj\*"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38262 次 |
| 最近记录: |