Cleaner
You could clean this code up allot more instead of using the same loops over and over.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim files As New List(Of String) Dim parents As New List(Of String) Dim directories As New List(Of String) For Each file As String In My.Computer.FileSystem.GetFiles(TextBox1.Text) If (file.ToLower().EndsWith(".lnk")) Then files.Add(file) parents.Add(TextBox1.Text) End If Next For Each dir As String In My.Computer.FileSystem.GetDirectories(TextBox1.Text) directories.Add(dir) Next Do Until directories.Count <= 0 Dim d As String = directories(0) For Each f As String In My.Computer.FileSystem.GetFiles(d) If (f.ToLower().EndsWith(".lnk")) Then files.Add(f) parents.Add(f) End If Next For Each di As String In My.Computer.FileSystem.GetDirectories(d) directories.Add(di) Next d = Nothing directories.RemoveAt(0) Loop For Each link As String In files With CreateObject("Wscript.Shell").CreateShortcut(link) If (Not .targetpath.startswith("http://") And Not .targetpath.startswith("https://") And Not .targetpath.startswith("www.")) Then If (My.Computer.FileSystem.FileExists(.targetpath) Or My.Computer.FileSystem.DirectoryExists(.targetpath)) Then listbox1.items.add(link & " - " & "Working") Else listbox1.items.add(link & " - " & "Broken") End If End If End With Next End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim files As New List(Of String) Dim parents As New List(Of String) Dim directories As New List(Of String) For Each file As String In My.Computer.FileSystem.GetFiles(TextBox1.Text) If (file.ToLower().EndsWith(".lnk")) Then files.Add(file) parents.Add(TextBox1.Text) End If Next For Each dir As String In My.Computer.FileSystem.GetDirectories(TextBox1.Text) directories.Add(dir) Next Do Until directories.Count <= 0 Dim d As String = directories(0) For Each f As String In My.Computer.FileSystem.GetFiles(d) If (f.ToLower().EndsWith(".lnk")) Then files.Add(f) parents.Add(f) End If Next For Each di As String In My.Computer.FileSystem.GetDirectories(d) directories.Add(di) Next d = Nothing directories.RemoveAt(0) Loop For Each link As String In files With CreateObject("Wscript.Shell").CreateShortcut(link) If (Not .targetpath.startswith("http://") And Not .targetpath.startswith("https://") And Not .targetpath.startswith("www.")) Then If (My.Computer.FileSystem.FileExists(.targetpath) Or My.Computer.FileSystem.DirectoryExists(.targetpath)) Then ListBox1.Items.Add(link & " - " & "Working") Else ListBox1.Items.Add(link & " - " & "Broken") My.Computer.FileSystem.DeleteFile(link) ListBox1.Items.Add(link & " - " & "Removed") End If End If End With Next End Sub
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim files As New List(Of String) Dim parents As New List(Of String) Dim directories As New List(Of String) For Each file As String In My.Computer.FileSystem.GetFiles(TextBox1.Text) If (file.ToLower().EndsWith(".lnk")) Then files.Add(file) parents.Add(TextBox1.Text) End If Next For Each dir As String In My.Computer.FileSystem.GetDirectories(TextBox1.Text) directories.Add(dir) Next Do Until directories.Count <= 0 Dim d As String = directories(0) For Each f As String In My.Computer.FileSystem.GetFiles(d) If (f.ToLower().EndsWith(".lnk")) Then files.Add(f) parents.Add(f) End If Next For Each di As String In My.Computer.FileSystem.GetDirectories(d) directories.Add(di) Next d = Nothing directories.RemoveAt(0) Loop For Each link As String In files With CreateObject("Wscript.Shell").CreateShortcut(link) If (Not .targetpath.startswith("http://") And Not .targetpath.startswith("https://") And Not .targetpath.startswith("www.")) Then If (My.Computer.FileSystem.FileExists(.targetpath) Or My.Computer.FileSystem.DirectoryExists(.targetpath)) Then listbox1.items.add(link & " - " & "Working") Else listbox1.items.add(link & " - " & "Broken") End If End If End With Next End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim files As New List(Of String) Dim parents As New List(Of String) Dim directories As New List(Of String) For Each file As String In My.Computer.FileSystem.GetFiles(TextBox1.Text) If (file.ToLower().EndsWith(".lnk")) Then files.Add(file) parents.Add(TextBox1.Text) End If Next For Each dir As String In My.Computer.FileSystem.GetDirectories(TextBox1.Text) directories.Add(dir) Next Do Until directories.Count <= 0 Dim d As String = directories(0) For Each f As String In My.Computer.FileSystem.GetFiles(d) If (f.ToLower().EndsWith(".lnk")) Then files.Add(f) parents.Add(f) End If Next For Each di As String In My.Computer.FileSystem.GetDirectories(d) directories.Add(di) Next d = Nothing directories.RemoveAt(0) Loop For Each link As String In files With CreateObject("Wscript.Shell").CreateShortcut(link) If (Not .targetpath.startswith("http://") And Not .targetpath.startswith("https://") And Not .targetpath.startswith("www.")) Then If (My.Computer.FileSystem.FileExists(.targetpath) Or My.Computer.FileSystem.DirectoryExists(.targetpath)) Then ListBox1.Items.Add(link & " - " & "Working") Else ListBox1.Items.Add(link & " - " & "Broken") My.Computer.FileSystem.DeleteFile(link) ListBox1.Items.Add(link & " - " & "Removed") End If End If End With Next End Sub End Class