2

ディレクトリを繰り返し処理し、「@」で終わらない最初のフォルダーで停止したい

これは私がこれまでに試したことです(このサイトの別の質問に基づいています):

string rootPath = "D:\\Pending\\Engineering\\Parts\\3";
string targetPattern = "*@";

string fullPath = Directory
                 .EnumerateFiles(rootPath, targetPattern, SearchOption.AllDirectories)                                               
                 .FirstOrDefault();

if (fullPath != null)
    Console.WriteLine("Found " + fullPath);
else
    Console.WriteLine("Not found");

*@は正しくないことを知っています。その部分を行う方法がわかりません。
また、SearchOptionVisual Studio で「あいまいな参照です」という問題が発生しています。

最終的には、コードでこのフォルダーの名前を取得し、それを使用して別のフォルダーの名前を変更したいと考えています。

最終的解決

dasblikenlight と user3601887 の組み合わせを使用することになりました

string fullPath = Directory
                   .GetDirectories(rootPath, "*", System.IO.SearchOption.TopDirectoryOnly)
                   .FirstOrDefault(fn => !fn.EndsWith("@"));
4

2 に答える 2

2

pattern は正規表現をサポートしていないためEnumerateFiles、すべてのディレクトリを取得し、C# 側でフィルタリングを行う必要があります。

string fullPath = Directory
    .EnumerateFiles(rootPath, "*", SearchOption.AllDirectories)                                               
    .FirstOrDefault(fn => !fn.EndsWith("@"));
于 2015-06-13T03:21:20.033 に答える