【发布时间】:2020-01-27 05:40:54
【问题描述】:
我有一个这样的目录结构:
A: -
B1 - C11 - D111
C12 - D121
D122
B2 - C21
C22
C23
C24
B3 - C31
现在,只获取二级目录,在 PowerShell 中是直接的:
$LEVEL2 = get-childitem -Path 'A:\*\*' | ?{ $_.PSIsContainer }
这会给我:
C11, C12, C21, C22, C23, C24, C31
现在,我想在 c# 中执行此操作。有人可以帮忙吗?
【问题讨论】:
-
不,实际上我想要的是所有子目录的列表,而不是特定的文件类型。
-
然后将
Directory.GetFiles()替换为Directory.GetDirectories()并且不要在模式字符串中添加扩展名。 -
链接的帖子假定该模式只是文件名的一部分,不回答这个问题。像
Directory.EnumerateDirectories这样具有模式匹配的IO 函数,它们将模式应用于名称而不是路径。这是这个问题,模式应该适用如果你想依赖这些函数,你首先需要从给定的模式中找到根,然后通过分割模式进行模式匹配,将模式分割为` and then for each level, useEnumerateDirectories`。跨度> -
@VishwasJoshi 给定的 PowerShell 不会在二级目录中停止。它还返回第 3 级和更深的级别。您是否需要像我在答案中所做的那样进行模式匹配?您需要第 2 级或更深的级别还是应该停止在第 2 级?
标签: c# .net powershell