2017-01-06 14 views
1

私は設定可能なserverpathというパスディレクトリを持っています。例えば、 。ディレクトリのセットから特定のディレクトリを抽出する

[email protected]"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) 

を呼び出したときに、私はすべてのディレクトリを取得しますが、私は与えられたフォーマットであるのみパスをしたいです。

これまでのところ、 "??。??。????"

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 

および他のすべてのパスを除外EnumerateDirectories方法

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

が、それでも私はこのようなものですパスを取得しています内のパターンディレクトリ内で

スラッシュを数える以外にこれを行う方法は他にありますか?

編集:ディレクトリ内の最後のフォルダのディレクトリパスを取得する方法はありますか? "01.01.2017"フォルダはそれぞれのディレクトリの最後のフォルダです。

+0

「。」のようです。最初の "??"の後にそれは問題を引き起こしている - 私は複数の言語のサブフォルダを持っている私のデバッグフォルダに似たフォルダ構造で遊んだ&私はすべての2つのキャラクタフォルダ(de、es、fr、...)を持っていた。最終フォルダの形式を01_01_2017に変更し、検索文字列を "?? _ ?? _ ????"に変更したとき - それから私は必要なフォルダだけを戻しました。 – PaulF

+0

私のためのオプションではありません。フォルダ名を変更することはできません。 –

+0

それで、EnumerateDirectoriesの仕組みと思われるように、後処理をする必要があるかもしれないようですが、ドキュメンテーションには何も言えません。 – PaulF

答えて

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 
+0

ありがとう!出来た! –

関連する問題