【问题标题】:extract particular directories from the set of directories从目录集中提取特定目录
【发布时间】:2017-01-06 11:23:13
【问题描述】:

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

【问题讨论】:

  • 看起来是“.”在第一个“??”之后这导致了问题 - 我在包含多个语言子文件夹的调试文件夹中使用了类似的文件夹结构,并且列出了所有两个字符文件夹(de、es、fr、...)。当我将最终文件夹的格式更改为 01_01_2017 并将搜索字符串更改为“??_??_????” - 然后我只得到了所需的文件夹。
  • 这对我来说不是一个选项..我不允许更改文件夹名称。
  • 那么看起来您可能需要进行一些后期处理,因为它似乎是 EnumerateDirectories 的工作方式 - 尽管文档中没有任何内容可以说明。

标签: c# visual-studio-2013 .net-4.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

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多