Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从目录集中提取特定目录_C#_Visual Studio 2013_.net 4.0 - Fatal编程技术网

C# 从目录集中提取特定目录

C# 从目录集中提取特定目录,c#,visual-studio-2013,.net-4.0,C#,Visual Studio 2013,.net 4.0,我有一个名为serverpath的path dir,它是可配置的。 例如 在服务器路径中有大量目录。格式如下: 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)

我有一个名为serverpath的path dir,它是可配置的。 例如

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

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) 
我得到所有的目录,但我只想要那些路径是在给定的格式

到目前为止,我已经尝试在EnumerateDirectory方法中添加“?”模式

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”文件夹是其各自目录中的最后一个文件夹

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

看起来是第一个“?”之后的“?”导致了问题-我在调试文件夹中使用了类似的文件夹结构,其中有多个语言子文件夹&我列出了所有两个字符的文件夹(de、es、fr等)。当我将最终文件夹的格式更改为01_01_2017&搜索字符串更改为“?????”-然后我只取回了所需的文件夹。这对我来说不是一个选项。我不允许更改文件夹名称。然后,看起来您可能需要进行一些后处理,因为这似乎是枚举目录的工作方式-尽管文档中没有说明这一点。
\d = digit
{} = quantifier (of what is left of the quantifier)
. = any character (NOT OF ANY USE HERE)
\. = explicit dot