使用同一命令搜索隐藏目录和可见目录

时间:2018-08-03 19:38:52

标签: 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);
            }
        }

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

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

出于效果的原因,是否可以合并两种搜索?

1 个答案:

答案 0 :(得分:5)

如果您想Get-ChildItem同时显示可见和隐藏的项目,则必须{@ {1}}作为@LotPings注释。

但是,如果您想做任何事情-Forcefor performance reasons?可能不是一个好方法。

Get-ChildItem

很快就会吐出全名列表作为文本。这些选项表示:

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

它也包括隐藏的东西。

[编辑:TheIncorrigible1认为robocopy $this.searchPath $this.searchPath /E /L /FP /NS /NC /NJH /NJS 是类方法的一个自动变量,用于引用当前实例,如果在PowerShell函数中使用它,那是一种不好的做法。如果您实际上是在一种方法中使用它,那么我不会编辑上面的代码,因此我的代码看起来像您的代码。]