从目录集中提取特定目录

时间:2017-01-06 11:23:13

标签: c# visual-studio-2013 .net-4.0

我有一个名为serverpath的路径目录,它是可配置的。 例如

serverpath=@"C:\AAA\New folder\";

在服务器路径中有大量目录。采用以下格式:

serverpath\ID1\ID2\FileType\YYYY\MM\DD.MM.YYYY
i.e. C:\AAA\New folder\123\456\2017\01\01.01.2017

当我打电话

 Directory.EnumerateDirectories(serverpath, "*", System.IO.SearchOption.AllDirectories) 

我得到所有目录,但我只想要那些给定格式的路径。

到目前为止,我试图添加“??。??。????” EnumerateDirectories方法中的模式

Directory.EnumerateDirectories(serverpath, "??.??.????", System.IO.SearchOption.AllDirectories) 

但我仍然得到这样的道路:

C:\AAA\New folder\123\456\pdf\2017\01 
C:\AAA\New folder\123\456\txt\2017\01 

我只想要这样的道路:

C:\AAA\New folder\123\456\pdf\2017\01\01.01.2017
C:\AAA\New folder\123\456\txt\2017\01\01.01.2017

并排除目录中的所有其他路径

除了计算斜线之外,还有其他任何方法吗?

编辑:有没有办法获取目录中最后一个文件夹的目录路径? “01.01.2017”文件夹是各自目录中的最后一个文件夹。

1 个答案:

答案 0 :(得分:1)

using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

namespace ConsoleApp
{
    class Program
    {
        static void Main()
        {
            string serverpath = @"C:\AAA\New folder\";

            Regex re = new Regex(@"\d{2}\.\d{2}\.\d{4}");
            var dirs = from dir in
                       Directory.EnumerateDirectories(serverpath, "*", SearchOption.AllDirectories)
                       where re.IsMatch(dir)
                       select dir;
        }
    }
}

这似乎有效。对不起,如果我误解了 - 我是新手。

\d = digit
{} = quantifier (of what is left of the quantifier)
. = any character (NOT OF ANY USE HERE)
\. = explicit dot