Renomeando arquivos e diretórios com C#

Olá, neste post irei mostrar como ren0mear arquivos e diretórios (pastas) via programação utilizando a linguagem C#.NET da Microsoft.

Esse recurso se torna muito útil quando é necessário renomear muitos arquivos que seguem um determinado padrão de nomenclatura, como por exemplo, ao invés de espaços nos nomes dos arquivos e pastas (ignorando os arquivos do sistema) seja inserido o caracter sublinhado (_), também conhecido com underscore. Esse será o padrão que irei utilizar como exemplo.

Para iniciar, abra o Visual Studio (pode ser também a versão Express que pode baixada neste link), crie um novo projeto Windows Forms na linguagem C# e digite o nome do projeto, neste exemplo irei inserir com o nome Renomeia_Arquivos;

Após isso, é só abrir a Toolbox pelas teclas de atalho CTRL + ALT + X, ou pelo menu View > Toolbox  e arrastar alguns componentes, de forma que fique similar a figura abaixo:

Feito isso dê um clique duplo no botão para abrir a tela de código.

E digite o seguinte código:

private void btnRenomear_Click(object sender, EventArgs e)
{
    bool remPastas = false;
    // Verifica se a caixa de marcação está selecionada 
if (ckcRenDiretorio.Checked) { remPastas = true; } renomeiaArquivos(txtCaminho.Text, remPastas); }

Após isso, crie um método chamado renomeiaArquivos de forma que aceite uma string e um valor booleano como parâmetro, como segue abaixo:

private void renomeiaArquivos(string caminho, bool renomeiaPastas)
       {
           try {
               // Caminho literal da pasta informada 
DirectoryInfo dirInfo = new DirectoryInfo(@caminho); // Pega todas as informações dos arquivos dentro do diretório informado
FileInfo[] arquivos = dirInfo.GetFiles(); string antigoNome; string novoNome; int arqAfet = 0, pastasAfet = 0; for (int i = 0; i < arquivos.Length; i++) { if(arquivos[i].Name.Contains(" ")){ // caminho\nome do arquivo antigoNome = @caminho+"\\"+arquivos[i].Name; // caminho\nome_do_arquivo novoNome = @caminho + "\\" + arquivos[i].Name.Replace(" ", "_"); // Move o arquivo para a mesma pasta com os carateres substituídos File.Move(antigoNome, novoNome); // Contagem dos arquivos renomeados arqAfet++; } } // Se caso foi selecionada a opção de renomear as pastas if (renomeiaPastas) { // Lista com todas as informações das pastas DirectoryInfo[] pastas = dirInfo.GetDirectories(); // itera (efetua um loop) dentro do vetor das pastas for (int i = 0; i < pastas.Length; i++) { if (pastas[i].Name.Contains(" ")) { // caminho\nome da pasta antigoNome = @caminho + "\\" + pastas[i].Name; // caminho\nome_da_pasta novoNome = @caminho + "\\" + pastas[i].Name.Replace(" ", "_"); Directory.Move(antigoNome, novoNome); // Contagem das pastas renomeadas pastasAfet++; } } } // Mensagem de sucesso MessageBox.Show(arqAfet + " arquivo(s) e " + pastasAfet + " pasta(s) renomeados com sucesso.", "Operação concluída", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch(Exception ex) { // Se der erro, exibe o que aconteceu MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } }

Espero ter contribuído com o seu conhecimento.

Até a próxima.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s