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