如何查找包含具有给定扩展名的文件的文件夹

最大净空

我是新手,已经看到 System.IO 可以提供我需要的东西,但我不知道如何。我正在使用VB.net

从给定的文件夹开始,例如C:\StartHere我想向下递归文件夹层次结构,查找包含具有给定扩展名的文件的任何文件夹,例如 * .exe我想建立这些文件夹的列表以供后续处理。

如果有人可以提供帮助,我将不胜感激,因为我不知道解决这个问题的最佳方法。

更新

以下提供了安德鲁·莫顿 (Andrew Morton) 要求的更多详细信息。从指定的文件夹开始,我想获得一个包含所有包含 EXE 的子文件夹的完整路径的列表。所以出现了以下文件夹......

C:\StartHere\folderA (contains some EXEs)
C:\StartHere\folderB (none in here)
C:\StartHere\Deeper\DeepC (contains some EXEs)
C:\StartHere\Deeper\DeepD (contains some EXEs)
C:\StartHere\Deeper\DeepE (none in here)
C:\StartHere\Deeper\DeepF (contains some EXEs)

该代码将生成一个包含以下内容的列表:

C:\StartHere\folderA 
C:\StartHere\Deeper\DeepC
C:\StartHere\Deeper\DeepD
C:\StartHere\Deeper\DeepF

我现在在@Tim Schmelter、@Jimi 和@Andrew Morton 的大力帮助下得到的代码是这样的:

Dim folderList = Directory.EnumerateDirectories("C:\StartHere", "*", SearchOption.AllDirectories).Where(Function(d) Directory.EnumerateFiles(d, "*.exe").Any()).Select(Function(f) Path.GetDirectoryName(f))

运行时,它会创建以下列表;所以它找到了正确的文件夹,但将其父文件夹添加到列表中,而不是完整路径:

C:\StartHere 
C:\StartHere\Deeper
C:\StartHere\Deeper
C:\StartHere\Deeper
蒂姆·施梅尔特

好吧,有一种方法可以满足您的需求:

Dim exeList = IO.Directory.GetFiles("C:\StartHere", "*.exe", IO.SearchOption.AllDirectories).ToList()

编辑:我首先误解了这个问题,所以你想要一个包含至少一个 exe 文件的所有文件夹的列表?您可以使用此 LINQ 查询:

Dim exeDirs = From dir In IO.Directory.EnumerateDirectories("C:\StartHere", "*.*", IO.SearchOption.AllDirectories)
              Where IO.Directory.EnumerateFiles(dir).Any(Function(file) IO.Path.GetExtension(file).Equals(".exe", StringComparison.OrdinalIgnoreCase))
Dim exeDirList As List(Of String) = exeDirs.ToList()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

复制包含具有给定扩展名的文件的所有文件夹

在cmd中如何列出包含具有特定扩展名的文件的文件夹?

如何将包含具有特定扩展名的文件的文件夹移动到目标文件夹?

如何遍历文件夹中的文件以移动具有特定扩展名的每个文件

如何删除特定文件夹中具有特定扩展名的所有文件?

如何删除文件夹中所有具有特定扩展名的文件?

如何在 Bash 中找到包含某些文件扩展名的所有文件夹?

如何从Andorid中的文件夹中删除具有特定扩展名的文件

使用 os.walk 在目录树下查找具有特定文件扩展名的文件夹

获取具有特定扩展名并在其文件夹中包含特定单词的文件?

从资产文件夹获取仅具有.txt扩展名的文件的文件名

移动包含扩展名的文件的文件夹

Bash:复制根/当前文件夹中具有相同扩展名的所有文件,但文件名包含某些字符串的文件除外

如何删除大树中特定命名文件夹中具有特定扩展名的所有文件?

C# - 如何检查文件夹中的所有文件是否具有特定扩展名

查找具有多个扩展名和多个字符串格式的文件夹

查找和删除文件夹及其子文件夹中所有不带扩展名的文件

移动子文件夹中具有相同扩展名的所有文件

查找文件夹中不是特定类型/扩展名的所有文件?

查看文件夹中是否包含某些带有某些扩展名的文件

如何创建具有相同文件名但具有不同文件扩展名的多个文件的 zip 文件夹

尝试将具有特定扩展名的文件从源文件夹复制到目标文件夹

批量打开Windows子文件夹中具有相同扩展名的文件

使用保留的文件夹树结构复制具有指定扩展名的文件

PHP搜索文件夹中具有特定后缀和扩展名的文件

如何将文件从具有特定扩展名的子文件夹移动到不同的子文件夹

在具有特定扩展名的所有文件夹和子文件夹中运行命令

如何从多个文件夹复制带有文件扩展名的文件?

当所有文件具有不同的扩展名时,如何将文件夹中所有文件的扩展名更改为一个公共扩展名?