none
Como eu faço isso? RRS feed

  • Pergunta

  • Primeiramente bom dia/tarde/noite pessoal,

    Eu preciso de uma ajuda com um projeto meu, é o seguinte: Eu tenho uma array chamada blacklist e ela vai conter algumas palavras definidas pelo usuário, até ai tudo bem. Porém eu quero que a minha aplicação procure nas pastas do usuário (documentos, desktop e etc) arquivos que contenham uma das palavras da array e então delete-os. Eu tentei por meio do FOR mas não passei disso, alguém poderia me ajudar com isso?

    EXEMPLO DO QUE EU QUERO:

    Supondo que a array tenha as palavras "Exemplo1" e "Exemplo2", eu quero que os arquivos e contenham uma dessas palavras no nome sejam deletados.

    domingo, 28 de fevereiro de 2016 22:32

Respostas

  • Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim dialog As New FolderBrowserDialog()
            'dialog.RootFolder = Environment.SpecialFolder.UserProfile
            'dialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
            dialog.RootFolder = Environment.SpecialFolder.Desktop
            dialog.SelectedPath = "E:\ef\"
            dialog.Description = "Diretório Base"
            If dialog.ShowDialog() = DialogResult.OK Then
                For Each file In
                    From filtro As Object In ListBox1.Items
                    Select filtro = "*" & filtro & "*"
                    Select list = My.Computer.FileSystem.GetFiles(dialog.SelectedPath, FileIO.SearchOption.SearchAllSubDirectories, filtro)
                    From file1 In list Select file1
                    Try
                        System.IO.File.Delete(file)
                        ListBox2.Items.Add(file)
                    Catch
                        ListBox3.Items.Add(file)
                    End Try
                Next
            End If
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            If ListBox1.Items.Contains(TextBox1.Text) = False Then
                ListBox1.Items.Add(TextBox1.Text)
            End If
            TextBox1.Text = String.Empty
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ActiveControl = TextBox1
            MessageBox.Show(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))
        End Sub
    End Class

    Arquivos

    Este é um exemplo que você pode usar para fazer o que quer.

    Coloquei 3 listbox para você ter uma boa noção do que está sendo feito.

    A ListBox1 recebe todos filtros, a ListBox2 recebe o nome dos arquivos deletados e a Listbox3 os nomes dos arquivos que não puderam ser deletados por algum problema que você pode tratar no try-catch.

    As linhas comentadas são as que você vai realmente usar para pegar a pasta do usuário conectado, eu usei outra para efeito de teste.

    Att,


    Antero Marques




    • Editado Antero Marques segunda-feira, 29 de fevereiro de 2016 02:03
    • Marcado como Resposta Marcos SJ segunda-feira, 29 de fevereiro de 2016 13:05
    segunda-feira, 29 de fevereiro de 2016 01:51

Todas as Respostas

  • LukasOliveira,

    Veja se isto pode ajudar:
    Pesquisando e substituindo texto em documentos

    Abraços,

    JoseBonfim

    segunda-feira, 29 de fevereiro de 2016 01:12
  • Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim dialog As New FolderBrowserDialog()
            'dialog.RootFolder = Environment.SpecialFolder.UserProfile
            'dialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
            dialog.RootFolder = Environment.SpecialFolder.Desktop
            dialog.SelectedPath = "E:\ef\"
            dialog.Description = "Diretório Base"
            If dialog.ShowDialog() = DialogResult.OK Then
                For Each file In
                    From filtro As Object In ListBox1.Items
                    Select filtro = "*" & filtro & "*"
                    Select list = My.Computer.FileSystem.GetFiles(dialog.SelectedPath, FileIO.SearchOption.SearchAllSubDirectories, filtro)
                    From file1 In list Select file1
                    Try
                        System.IO.File.Delete(file)
                        ListBox2.Items.Add(file)
                    Catch
                        ListBox3.Items.Add(file)
                    End Try
                Next
            End If
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            If ListBox1.Items.Contains(TextBox1.Text) = False Then
                ListBox1.Items.Add(TextBox1.Text)
            End If
            TextBox1.Text = String.Empty
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ActiveControl = TextBox1
            MessageBox.Show(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))
        End Sub
    End Class

    Arquivos

    Este é um exemplo que você pode usar para fazer o que quer.

    Coloquei 3 listbox para você ter uma boa noção do que está sendo feito.

    A ListBox1 recebe todos filtros, a ListBox2 recebe o nome dos arquivos deletados e a Listbox3 os nomes dos arquivos que não puderam ser deletados por algum problema que você pode tratar no try-catch.

    As linhas comentadas são as que você vai realmente usar para pegar a pasta do usuário conectado, eu usei outra para efeito de teste.

    Att,


    Antero Marques




    • Editado Antero Marques segunda-feira, 29 de fevereiro de 2016 02:03
    • Marcado como Resposta Marcos SJ segunda-feira, 29 de fevereiro de 2016 13:05
    segunda-feira, 29 de fevereiro de 2016 01:51
  • Obrigado pela resposta, mas está retornando o seguinte erro:

    An unhandled exception of type 'System.IO.PathTooLongException' occurred in mscorlib.dll
    
    Additional information: O caminho especificado, o nome do arquivo ou ambos são muito longos. O nome de arquivo totalmente qualificado deve ter menos de 260 caracteres e o nome do diretório menos de 248 caracteres.

    quinta-feira, 3 de março de 2016 14:45