none
Renomear randomicamente arquivos de uma pasta RRS feed

  • Pergunta

  • Já tentei de varias formas, mas ainda não consegui escrever esse código, a logica é a seguinte: em uma pasta contem arquivos com nomes diversos e gostaria que a cada 30seg algum arquivo mudasse seu nome para (aa1), por exemplo, e depois de 30 seg outro arquivo iria se chamar (aa1), pode ser em sequencia ou randômico.
    sexta-feira, 28 de fevereiro de 2020 03:46

Todas as Respostas

  • Bom dia amigo!

    Escrevi um código para tentar solucionar o seu problema. Fiz apenas como teste, funcionou direitinho aqui mas falta colocar algumas consistências ao acessar o diretório e tentar renomear os arquivos, OK? Aí você complementa a lógica depois. Mas é basicamente isto:

    Imports System.Threading
    
    Module Module1
        Dim arquivoRandomico As String
        Dim arquivoOriginal As String
        Dim diretorio As String
        Dim listaArqs() As String
    
    
        Sub Main()
            ' Recupera a lista dos arquivos do diretório
            diretorio = "c:\temp\"
            listaArqs = IO.Directory.GetFiles(diretorio)
    
            ' Exibe os arquivos
            Console.WriteLine("Lista de arquivos: ")
            For Each file As String In listaArqs
                Console.WriteLine(file)
            Next
    
            ' Inicializa uma Thread/Loop para efetuar o processamento sem bloquear o programa
            Dim t = New Thread(AddressOf RenomearArqRand)
            t.IsBackground = True
            t.Start()
    
            Console.ReadKey()
    
        End Sub
    
        Private Function RenomearArqRand()
            ' Obtêm a quantidade de arquivos e randomiza um índice baseado na quantidade de arquivos
            Dim qtdArqs As Integer = listaArqs.Count()
            Dim indiceRand As Integer
    
            Do
                indiceRand = IndiceRandomico(1, qtdArqs)
                arquivoRandomico = listaArqs(indiceRand - 1).ToString()
                arquivoOriginal = arquivoRandomico
    
                Console.WriteLine("Arquivo Randomico: " + arquivoRandomico)
    
                ' Renomeia o arquivo para o nome desejado 'aa1'
                IO.File.Move(arquivoRandomico, diretorio + "aa1")
    
                ' Aguarda 30 segundos
                Thread.Sleep(30000)
    
                ' Renomeia o arquivo para o nome original e randomiza outro arquivo
                IO.File.Move(diretorio + "aa1", arquivoOriginal)
    
                ' Aguarda um tempo para copiar o arquivo
                Thread.Sleep(2000)
            Loop
    
        End Function
    
    
        ' Randomiza um número dado um intervalo mínimo e máximo
        Private Function IndiceRandomico(ByVal min As Integer, ByVal max As Integer) As Integer
    
            ' Inicializa o RandomGenerator
            Dim RandGen As System.Random = New System.Random()
    
            ' Retorna o número randômico do intervalo. Obs.: Adicionar +1 ao valor máximo, caso queira que ele entre na contagem . Ex.: 1 a 10. Enviar 1 a 11
            Return RandGen.Next(min, max + 1)
        End Function
    
    
    End Module
    

    Espero ter ajudado! Abraço!

    • Sugerido como Resposta FelipeReis249 terça-feira, 17 de março de 2020 23:58
    sexta-feira, 28 de fevereiro de 2020 14:52