2015-02-24 7 views
-2

Я искал высоко и низко и не могу найти способ сделать это. Я пишу программу, которая будет работать при входе в систему и удалить каталог в другом каталоге. Наша компания имеет программное приложение, которое содержит каталог, который иногда становится поврежденным. Проблема в том, что каталог содержит некоторые статические слова, а затем добавляется с произвольно сгенерированным набором символов. Таким образом, необходимо искать статические слова и удалять любую содержащую их директорию. Это пинает мою задницу. Спасибо за любую помощь!VB.NET - поиск каталога и удаление, если он содержит определенные символы

Edit:

Мои извинения за не добавляя все или некоторые из кода, который я написал до сих пор. Я могу удалить статические каталоги, но не динамические. Опять же, я учу себя, и я уверен, что есть лучшие способы сделать то, что мне нужно, но я их не знаю. Я также уверен, что мой код грязный и такой. Я хотел бы получить конструктивную критику, но, пожалуйста, не заставляйте меня пытаться. См. Ниже. Благодаря!

Imports System.IO 

Module Module1 

Public Sub Main() 

'I'm wanting to see the user name output in the console 
    Dim user As String 
    user = Environment.UserName 

    Console.Write(user) 
    'new line 
    Console.WriteLine() 

    Dim path1 As String 
    path1 = "\appdata\local\DIRECTORY\APPLICATIONNAME.exe_Url_ny2thmvtmqmw4jiqk1yuytwfbddruu02" 

    Dim path2 As String 
    path2 = "\appdata\local\DIRECTORY\APPLICATIONNAME.exe_Url_r3joylqll52q54guz0002pxu4swqous0" 

    Dim fullpath As String 
    fullpath = "C:\Users\" & user & path1 

    Dim fullpath2 As String 
    fullpath2 = "C:\Users\" & user & path2 

    Dim toplevel As String 
    toplevel = "\appdata\local\APPLICATIONNAME\" 

    Dim toplevel1 As String 
    toplevel1 = "C:\Users" & user & toplevel 

    If Directory.Exists(fullpath) = True Then 

     Directory.Delete(fullpath, True) 

    ElseIf Directory.Exists(fullpath2) = True Then 

     Directory.Delete(fullpath2, True) 

    End If 

'I would like to keep the window open until I work the kinks out 
    Console.WriteLine("Finished. You may now close this window.") 
    Console.ReadKey() 

End Sub 

End Module 
+1

Добро пожаловать в StackOverflow. Пожалуйста, напишите, что вы пробовали до сих пор. –

+0

Доброе утро, RS! Благодарим за приветствие! Вы правы - я должен был добавить свой код. По сути, я могу удалять статически названные каталоги и искал код о том, как искать имя каталога и удалять любые каталоги, возвращенные из указанного поиска, но я не нашел ничего, что делает это. Когда я попытался что-то написать, я проигнорировал, как выполнить действие. Мне бы хотелось посмотреть, как это сделать, и объясняемая им логика. Я хочу учиться. Благодаря! – Deodra

ответ

0

Это должно делать то, что вам нужно. Я включил имена параметров, чтобы сделать их более читаемыми. Вы можете лишить их, если вы предпочитаете более лаконичный подход ...

' Will find all directories under C:\Root\Folder\ 
' (including subdirectories) with a name that starts 
' with "SearchString", then delete them and their contents 
System.IO. 
    Directory. 
    GetDirectories(
     path:="C:\Root\Folder\", 
     searchPattern:="SearchString*", 
     searchOption:=System.IO.SearchOption.AllDirectories). 
    ToList(). 
    ForEach(Sub(x) System.IO.Directory.Delete(path:=x, recursive:=True)) 

Тем не менее, это просто объединяются две задачи:

  • Поиск списка каталогов
  • Удаление каждого из в свою очередь

В Интернете есть много учебников и примеров (и многочисленные вопросы о переполнении стека), относящиеся к этим темам.

Edit: Краткая версия

Imports System.IO 

Directory.GetDirectories("C:\Root\Folder\", "SearchString*", SearchOption.AllDirectories). 
    ToList().ForEach(Sub(x) Directory.Delete(x, True)) 
+0

Спасибо, Basic! Да, я нашел множество вопросов о том, как удалить каталоги, но ничего не найдено, как найти определенный текст в именах каталогов, а затем удалить возвращаемые данные. Я ценю ваш замечательный и уважительный ответ. Обычно я нахожу, когда я задаю вопросы людям, я взорваюсь за то, что не являюсь экспертом. Я пытаюсь учиться и искать, как сумасшедший, прежде чем обращаться за помощью. – Deodra

+0

Не беспокойтесь. Я отредактировал, чтобы включить краткую версию. Кстати, вы можете захотеть пройти через справочный центр, если вы новичок, особенно в разделе [ask] (http://stackoverflow.com/help/asking). Это сэкономит вам немного трения, пока вы найдете дорогу. Добро пожаловать в SO – Basic

+0

Еще раз спасибо, Basic! Я обязательно проверю этот раздел. Очень ценится, приятель! – Deodra

0

попробовать использовать что-то вроде этот код ниже удаляет каждую папку Thats содержит шаблон, указанный на строка массива.

Dim Words() As String = {"Word1","Word3","Word4",.."Wordn"} 
For Each iPatternWord as String In Words 
    For Each iDir As System.IO.DirectoryInfo In System.IO.Directory.GetDirectories(@"C:\",iPattern) 
     iDir.Delete(true);//===>Delete this folder.   
    Loop 
Loop 
+0

Спасибо, @Basic и @ MrAlex6204! Я попробую один или оба из них! Y'all рок для ответа так быстро! – Deodra

Смежные вопросы