在同一命令中搜索隐藏和可见目录

Lui*_*uis 3 powershell

我需要获取符合特定条件的隐藏可见目录,并且我想在同一个调用中执行此操作,而不是重复搜索隐藏和可见项目.显然GetChildItem,使用-Attribute-Hidden参数是不可能的.

我无法让-Attribute参数按照我想要的方式工作:

Get-ChildItem -Recurse -Directory -Attributes Hidden+!Hidden -Path $this.searchPath | ForEach-Object {
            if ($_.Name -eq $targetFeatureToSearch)
            {
                $result.Add([IO.Directory]::GetParent($_.FullName).FullName);
            }
        }
Run Code Online (Sandbox Code Playgroud)

如果我使用-Hidden,搜索中只包含隐藏的项目.如果未使用,则搜索中仅包含可见项.

Get-ChildItem -Recurse -Directory -Path $this.searchPath | ForEach-Object {
            if ($_.Name -eq $targetFeatureToSearch)
            {
                $result.Add([IO.Directory]::GetParent($_.FullName).FullName);
            }
        }
Run Code Online (Sandbox Code Playgroud)

出于性能原因,有没有办法将两种搜索结合起来?

Tes*_*ler 5

如果你想Get-ChildItem向你展示可见和隐藏的项目,你必须-Force像@LotPings评论一样.

但如果你想做任何事情for performance reasons?,Get-ChildItem可能不是一个好方法.

robocopy $this.searchPath $this.searchPath /E /L /FP /NS /NC /NJH /NJS
Run Code Online (Sandbox Code Playgroud)

将很快地以文本的形式吐出全名列表.选项意味着:

  • 来源和"目的地",但它不会复制或移动任何东西
  • / E - 递归包括空目录
  • / L - 仅列出文件和文件夹,不做任何复制或移动
  • / FP - 显示文件和文件夹的完整路径
  • / NS/NC - 输出中没有大小,没有'class'(文件与目录)指示符
  • / NJH/NJS - 没有工作标题或摘要,只是一个简单的内容列表

它确实包括隐藏的东西.

[编辑:TheIncorrigible1注释$this是类方法的自动变量,用于引用当前实例,如果您在PowerShell函数中使用它,这是一种不好的做法.我不会编辑上面的代码,如果你真的在一个方法中使用它,所以我的代码看起来像你的.]

  • 我想指出`$ this`是一个自动变量,除非这是一个类方法,否则它是有害的. (2认同)