ShakalX Ответов: 1

C# как найти папку, не имея полного имени?


Всем привет, мне нужна помощь. Мне нужно найти папку, в которой каждая новая версия меняет свое имя, но она всегда имеет одно и то же начальное имя. В случае "SCF", но он всегда меняется на такие имена, как "SCF1", "SCF2", SCFNEW "как найти папку, имеющую только начальное имя, которое не меняется?

<pre> void ScanOldVersion1()
            {
            try
                {
               
                string download = Environment.GetEnvironmentVariable("ProgramData") + @"\"+"SCF";
                MessageBox.Show(download);
                new List<string>(Directory.GetFiles(download)).ForEach(file =>
                {
                    if (file.IndexOf(".PDF", StringComparison.OrdinalIgnoreCase) >= 0)
                        PatchFile(file, file);
                    
                });
                }
            catch { }
                {

                }


Что я уже пробовал:

Нужно что-то вроде этого.

<pre>void ScanOldVersion1()
            {
            try
                {
               
                string download = Environment.GetEnvironmentVariable("ProgramData") + @"\".Contains"SCF";
                MessageBox.Show(download);
                new List<string>(Directory.GetFiles(download)).ForEach(file =>
                {
                    if (file.IndexOf(".PDF", StringComparison.OrdinalIgnoreCase) >= 0)
                        PatchFile(file, file);
                    
                });
                }
            catch { }
                {

                }




Я пробую, но ничего не получается
void ScanOldVersion1()
           {
           try

               {
               string[] dirs = Directory.GetDirectories(@"C:\ProgramData", "SCF", SearchOption.AllDirectories);

               foreach (string dir in dirs)
                   {
                   new List<string>(Directory.GetFiles(dir)).ForEach(file =>
                   {
                       if (file.IndexOf(".PDF", StringComparison.OrdinalIgnoreCase) >= 0)
                           PatchFile(file, file);

                   });
                   }
               }



           catch { }
               {

               }
           }

1 Ответов

Рейтинг:
5

OriginalGriff

Использовать это: Каталог.Метод GetDirectories (String, String, SearchOption) (System.IO)[^]

string[] dirs = Directory.GetDirectories(strPathToRootOfSearch, "SCF*", SearchOption.AllDirectories);


ShakalX

я стараюсь, но безрезультатно. =/

OriginalGriff

Что именно вы пробовали?
Скопируйте и вставьте код и покажите нам, что отладчик показывает во всех задействованных переменных.

ShakalX

работайте, если используете SearchOption.TopDirectoryOnly, но мне ли нужен "ASCF" или "1SCF" ? Возможное использование, если содержит?

OriginalGriff

Вы ведь знаете, как работают "подстановочные" символы, не так ли?

...ToRootOfSearch, "*SCF*", SearchOpti...

Maciej Los

*|*
\о/

:смеяться:

ShakalX

Большое спасибо.

OriginalGriff

Всегда пожалуйста!

ShakalX

У меня есть еще один вопрос. Для поиска файла во всех папках и подпапках. Я стараюсь вот так. но это не работает. Просто найдите файл, если Кстати полный путь к папке.

string[] ext = новая строка[1] { "*.CSB" };

foreach (строка, найденная в ext)
{
string[] extracted = каталог.Заражен("C:\\ProgramData", нашли, систему.ИО.Searchoption указывает, нужно.AllDirectories);

foreach (строковый файл в извлеченном виде)
{
Приставка.WriteLine(файл);
Ящик для сообщений.Показать(файл);
}
}
как эта работа

string[] ext = новая строка[1] { "*.CSB" };

foreach (строка, найденная в ext)
{
string[] extracted = каталог.Заражен("C:\\ProgramData\\NewCBProg", нашли, систему.ИО.Searchoption указывает, нужно.AllDirectories);

foreach (строковый файл в извлеченном виде)
{
Приставка.WriteLine(файл);
Ящик для сообщений.Показать(файл);
}
}