只获取第一级子目录C#

时间:2016-11-24 13:04:28

标签: c# powershell directory

我的文件夹结构如下

enter image description here

主文件夹的路径是

C:\Users\me\Desktop\main_folder\

可以有任意数量的任何名称的子文件夹。

我需要做的是进入每个子文件夹并解压缩其中的zip文件。

为此,在powerhsell中,我们可以使用跟随的路径,它接受给定文件夹中的任何子文件夹。

C:\Users\me\Desktop\main_folder\*\*.zip

但是如何在C#中执行此操作?

我试图使用的方法是

System.IO.Directory.GetFiles("C:\Users\me\Desktop\main_folder\*\",
      "*.zip",System.IO.SearchOption.TopDirectoryOnly);

2 个答案:

答案 0 :(得分:5)

试试这个:

string root = @"C:\Users\me\Desktop\main_folder\";

var files = 
    Directory.EnumerateDirectories(root).SelectMany(
        directory => Directory.EnumerateFiles(directory, "*.zip"));

答案 1 :(得分:1)

你可以使用LINQ:

string mainFolder = @"C:\Users\me\Desktop\main_folder";
List<string> zipPaths = new List<string>();

string[] subDirectories = Directory.GetDirectories(mainFolder);
subDirectories.ToList().ForEach((path) =>
{
    // you can either process your zips here...
    // (in this case you don't have to add the paths to the zipPaths list)
    zipPaths.AddRange(Directory.GetFiles(path, "*.zip"));
});

// or you can process your zipPaths list here...

ZIP文件的所有路径都在zipPaths列表中。