Select 特定文件夹中的文件

Select files in specific folders

在我的脚本中我 运行 一次 $data = gci d:\ -recurse -force 然后我将输出用于不同的目的,例如文件或文件夹报告,因此无法使用 Where-Object 过滤主 gci 命令.现在对于特定的 table 我需要从用户通过函数参数指定的目录中的 $data 输出中检索文件。这是我用于文件夹的内容:

$regexPath = [regex]::Escape($SpecificDirectory)
$folders = $data | ? {$_.Attributes -eq "Directory" -and $_.FullName -match "^$regexPath"}

但我不知道如何使用 $Data 变量的输出从特定文件夹中获取文件。

不确定您要查找的内容,但以下内容将为您提供 d:\temp\vm 文件夹中的所有文件:

$data = gci d:\ -recurse -force

$数据 |其中 { $_.DirectoryName -like "D:\temp\vm" }

您获取文件的方式与获取文件夹的方式相同,只是您反转了对象类型的检查(从 -eq "Directory"-ne "Directory")。

不过,我建议进行一些优化:

  • 使用 PSIsContainer 属性 是区分文件和文件夹的更简单方法。
  • 模式匹配(运算符-like)比正则表达式匹配(运算符-match)提供更好的性能。

尝试这样的事情:

$data | ? {-not $_.PSIsContainer -and $_.FullName -like "$SpecificDirectory\*"}

如果你只需要 $SpecificDirectory 中的文件,而不需要其子目录,你也可以这样做:

$data | ? {-not $_.PSIsContainer -and $_.DirectoryName -eq $SpecificDirectory}