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}
在我的脚本中我 运行 一次 $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}