2016-04-24 2 views
0

Я ищу некоторые рекомендации по получению функции, работающей над программой, над которой я работаю.Ищете руководство для программы vb.net для очистки файловых каталогов temp для каждого пользователя

Функция, за которую я застрял, предназначен для удаления всех файлов из нескольких каталогов на удаленном компьютере для всех профилей пользователей на этом компьютере.

На данный момент я пытаюсь получить вывод в своем текстовом поле со всеми файлами в каталогах и подкаталогах, прежде чем добавить файл .delete().

Все «элементы» отображаются в виде символов одной буквы, поскольку они разделяют каждую букву в пути к отдельному элементу (вероятно, так, как я делал For..Each).

Я знаю, что делаю несколько ошибок noobie, так как я очень новичок в VB.net, и я все еще очень нахожусь на этапе обучения, но я ищу некоторое руководство.

Я искал и потянул кусочки вместе, чтобы заставить его работать, но поразил стену, любая помощь приветствуется!

Текущий код:

Private Sub Deltemp_Click(sender As Object, e As EventArgs) Handles Deltemp.Click 
    If Compname2.Text = "" Then 
     MessageBox.Show("You didn't enter anything in the Computername field, please enter something then try again.") 
     GoTo statementend 
    End If 
    Try 
     If My.Computer.Network.Ping(Compname2.Text, 1000) Then 
      PSoutput.Text = "" 
     Else 
      PSoutput.Text &= Compname2.Text + " is not connected to our network currently." 
      GoTo statementend 
     End If 
     PSoutput.Text = "" 
     Dim userpath As String = "\\" + Compname2.Text + "\c$\users\" 
     Dim tempu(7) As String 
     tempu(0) = "\AppData\Local\Temp\" 
     tempu(1) = "\AppData\Local\Microsoft\Windows\Temporary Internet Files\" 
     tempu(2) = "\AppData\Local\Microsoft\Credentials" 
     tempu(3) = "\AppData\Local\Temporary Internet Files\" 
     tempu(4) = "\AppData\Roaming\Microsoft\Credentials" 
     tempu(5) = "\AppData\Roaming\SUN" 
     tempu(6) = "\AppData\Local\Apps\2.0" 
     Dim fsd As Object 
     fsd = FileIO.FileSystem.GetDirectories(userpath) 
     For Each user In fsd 
      Try 
       Dim filepaths = FileIO.SpecialDirectories.AllUsersApplicationData() 
       If user Like "*Default*" Or user Like "*.NET*" Or user Like "*All Users" Or user Like "*Public" Then 
        PSoutput.Text &= "" 
       Else 
        Dim Fullpath = user + tempu(7) 
        For Each item In Fullpath 
         FileIO.FileSystem.GetFiles(Fullpath) 
         PSoutput.Text &= item.ToString + " was found" & Environment.NewLine 
        Next 
       End If 
      Catch ex As Exception 
       PSoutput.Text &= "A file was skipped for being in use or an exception occured" & Environment.NewLine 
      End Try 
     Next 
    Catch 
     MessageBox.Show("The machine/ip entered doesn't exist on our network or is an invalid entry") 
    End Try 
statementend: 
    End Sub 

ответ

1

Именно это прямо здесь:

Dim Fullpath = user + tempu(7) 
    For Each item In Fullpath '<<<<<<<<< 

Fullpath, как представляется, быть строка, поэтому, когда вы делаете For-Each вы перебор символов в этой строке.

Я думаю, что вы хотите создать новый DirectoryInfo, получить файлы в этом каталоге и выполнить итерацию через них.

Я рекомендую добавить «Option Strict» в начало вашего кода или включить его для проекта. Тогда компилятор будет более «строгим», требуя, чтобы вы объявляли типы, а затем компилятор заставит вас более четко указать, с какими типами вы работаете. Он выделит некоторые ошибки для исправления, но это того стоит.

+0

Я знал, что это должно быть что-то легкое, я пропал без вести, спасибо Скотт! - Дополнительный вопрос, если можно, я замечаю, что когда я запускаю его таким образом, я получаю только файлы во всех каталогах, я также не видел каталогов get, когда я располагаю точками в каталогах, так или иначе, чтобы получить все файлы внутри все подкаталоги включены? Также спасибо за подсказку «Option Strict», я получу эту реализацию :) –

+1

Нет, вам нужно будет рекурсивно получить каталоги в каждом каталоге и получить файлы в каждом каталоге. Таким образом, вам понадобится еще один метод - вы передадите ему каталог, затем он получит все подкаталоги в этом каталоге и называет себя. Таким образом, он продолжает просматривать все подкаталоги, пока их больше нет. –

+1

Вот [пример] (https://support.microsoft.com/en-us/kb/306666) и [еще один] (http://www.coderslexicon.com/playing-with-recursive-directory-diving -в-VB-нетто /). –

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