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