Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Centro de recursosBlog
Usando o Cmdlet Rename-Item para Renomear Arquivos no PowerShell

Usando o Cmdlet Rename-Item para Renomear Arquivos no PowerShell

Oct 9, 2024

O que é o cmdlet Rename-Item?

O cmdlet Rename-Item no PowerShell pode ser usado para alterar o nome de um item. Esse item pode ser um arquivo, diretório ou qualquer objeto em um caminho. O cmdlet também pode ser usado para renomear itens tanto localmente quanto em um ambiente de rede. Os usuários também podem realizar operações de renomeação em lote, integrar tarefas de renomeação em scripts para automação e até gerenciar requisitos de renomeação complexos com a ajuda de caracteres curinga e expressões regulares. Por exemplo, os usuários podem facilmente alterar nomes de arquivos e extensões ou organizar arquivos incorporando carimbos de data/hora ou outras informações identificadoras em seus nomes.

Cmdlet Rename-Item: Sintaxe

Abaixo está a sintaxe do cmdlet PowerShell Rename-Item e seus parâmetros de suporte, que oferecem flexibilidade e controle sobre o processo de renomeação.

      Rename-Item -Path <String> -NewName <String> [-Force] [-PassThru] [-WhatIf] [-Confirm] [<CommonParameters>]
      

Abaixo está o cmdlet básico de Rename-Item; este comando renomeia um arquivo de “Report.txt” para “Report-26-09-2024.txt” no diretório atual.

      Rename-Item -Path "C:\Temp\Report.txt" -NewName "Report-26-09-2024.txt"
      

Tutorial de Scripting do Windows PowerShell (PDF) para Iniciantes

Saiba mais

Rename-Item: Parâmetros

Compreender os parâmetros do Rename-Item ajudará você a usar eficazmente o cmdlet para renomear itens. Abaixo está uma explicação de todos os parâmetros usados com este cmdlet no PowerShell.

Parâmetros

Descrição

-Path

Especifica o caminho do item a ser renomeado. Pode ser o caminho completo ou relativo ao diretório atual. O item no caminho pode ser um arquivo, pasta ou qualquer outro tipo que suporte renomeação. Este parâmetro é obrigatório.

-LiteralPath

Fornece uma alternativa para -Path. É usado para especificar o caminho quando os nomes dos itens incluem caracteres especiais que o PowerShell pode interpretar de forma diferente, como “[“ ou “]”. Ao contrário de -Path, caracteres curinga não são permitidos e a string especificada é usada exatamente como está.

-NewName

Este parâmetro obrigatório representa o novo nome para o item. É importante notar que isso deve ser apenas o nome do item, não um caminho. Se você está renomeando um arquivo e deseja manter seu tipo de arquivo, certifique-se de que a extensão de arquivo apropriada esteja incluída no novo nome.

-Credential

Embora não seja comumente utilizado em scripts para gerenciamento de arquivos locais, este parâmetro opcional permite que o cmdlet seja executado usando um conjunto de credenciais especificadas pelo usuário. Isso pode ser útil ao trabalhar com arquivos em um compartilhamento de rede ou em qualquer cenário que exija permissões específicas.

-Force

Este parâmetro permite que o cmdlet renomeie itens somente leitura, ocultos ou de outra forma protegidos. Ele substitui restrições que geralmente impediriam a operação de ser bem-sucedida.

-PassThru

Por padrão, o Rename-Item não gera nenhum objeto. Quando o parâmetro -PassThru é utilizado, o cmdlet retorna o objeto que foi renomeado. Isso pode ser útil para encaminhar o item renomeado para comandos adicionais ou para verificação imediata da operação.

-WhatIf

Este recurso de segurança simula a execução do cmdlet sem realizar a operação de renomeação. Ele mostra o que aconteceria se o cmdlet fosse executado, fornecendo uma prévia dos resultados. Isso pode ser particularmente útil em scripts ou operações em lote onde se deseja evitar consequências não intencionais.

-Confirmar

Solicita a confirmação do usuário antes de executar o cmdlet. Isso pode ser útil em scripts interativos ou ao fazer alterações significativas, proporcionando uma camada extra de segurança contra ações não intencionais.

Exemplos de uso do Rename-Item com parâmetros

Abaixo estão alguns exemplos de Rename-Item com diferentes parâmetros; esses exemplos mostrarão como renomear itens sob várias condições, fornecendo um entendimento prático de como aplicar o cmdlet em cenários do mundo real.

Abaixo está um exemplo básico de cmdlet, que renomeia um único arquivo de “Design.txt” para “Report.txt”.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt"
      

O parâmetro -Force renomeia arquivos somente leitura ou ocultos, conforme mostrado no exemplo abaixo.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -Force
      

O parâmetro -PassThru retorna um objeto que representa o item renomeado, que pode então ser encaminhado para outro cmdlet; após renomear, obtemos imediatamente todos os detalhes do item renomeado.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -PassThru | Get-Item
      
Image

Para ver o que aconteceria sem realizar a renomeação, use o parâmetro -WhatIf. Isso é especialmente útil para testes em scripts. Após confirmar o resultado, execute o cmdlet sem o parâmetro -WhatIf para o processo de renomeação real.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "C:\Backups\NewDesign.txt" -WhatIf
      
Image

A saída irá descrever a ação, mas não executá-la.

Se você deseja ser solicitado para confirmação antes que a renomeação ocorra, use o parâmetro Confirm. Isso é útil para cenários onde uma renomeação acidental poderia ter consequências significativas.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -Confirm
      

Será solicitado que confirme a ação antes de prosseguir.

Image

Parâmetros Path vs. LiteralPath

Ao trabalhar com cmdlets que envolvem operações de arquivo e diretório, você frequentemente se deparará com dois parâmetros, -Path e -LiteralPath. Compreender as diferenças entre esses dois parâmetros é essencial para gerenciar tarefas do sistema de arquivos de forma eficaz, especialmente ao lidar com nomes de arquivos ou caminhos que incluem caracteres especiais ou palavras reservadas.

-Path

-Path é o parâmetro mais comumente usado para especificar a localização dos itens. Ele suporta curinga (*), permitindo correspondência de padrões e seleção de múltiplos itens com um único comando. O PowerShell interpreta caracteres especiais, incluindo caracteres curinga. Isso significa que se os nomes dos seus arquivos ou caminhos incluírem caracteres como “[],(),{}”, o PowerShell pode tratá-los como parte de um padrão curinga, levando potencialmente a um comportamento inesperado.

Exemplo

      Rename-Item -Path C:\Logs\*
      

-LiteralPath

-LiteralPath é utilizado para especificar a localização de itens sem interpretar nenhum caractere como curingas. Você pode inserir este parâmetro ao lidar com nomes de arquivos ou caminhos que incluem caracteres especiais, garantindo que o PowerShell trate a string de entrada literalmente sem tentar correspondência de padrões.

Exemplo

      Rename-Item -LiteralPath “C:\Files\[Design].txt”
      

Exemplos Comuns de Uso do Rename-Item

Renomear e Mover Arquivos

Você não pode usar o cmdlet Rename-Item para renomear arquivos via PowerShell e movê-los para um local diferente. Você receberá o erro abaixo ao fazer isso.

Image

Você deve usar o cmdlet Move Item para mover o arquivo e, simultaneamente, renomear o nome do arquivo no destino.

Abaixo está como você pode usar cmdlet para mover e renomear arquivos.

      Move-Item -Path "C:\Backups\Design.txt" -Destination "C:\Archive\NewDesign.txt"
      

Renomear Arquivos Ocultos e Somente Leitura

Para renomear um arquivo oculto ou somente leitura, use o parâmetro -Force com o cmdlet Rename-Item. Este parâmetro permite que o PowerShell ignore o atributo somente leitura durante o processo de renomeação.

      Rename-Item -Path "C:\Documents\ReadOnlyFile.txt" -NewName "RenamedFile.txt" -Force
      

Renomear Arquivos em Lote

Renomear arquivos em lote usando PowerShell é uma tarefa comum ao gerenciar grandes conjuntos de dados, organizar arquivos ou simplesmente limpar diretórios.

Se você precisa alterar a extensão de múltiplos arquivos, por exemplo, de “.txt” para “.log”, você pode usar o seguinte script.

      Get-ChildItem -Path "C:\Documents" -Filter "*.txt" | ForEach-Object {

    $newName = [io.path]::ChangeExtension($_.Name, ".log")

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Ou você pode usar o cmdlet do PowerShell para renomear múltiplos arquivos e extensões de arquivo abaixo sem adicionar um loop para cada arquivo.

      Get-ChildItem -Path "C:\Documents\*.txt" | Rename-Item -NewName { $_.Name -replace ".txt",".log" }
      

Adicionando Prefixos e Sufixos

Usando o comando do PowerShell para renomear todos os arquivos em um diretório, você pode adicionar prefixos ou sufixos aos nomes dos arquivos. Essa é uma tarefa comum ao organizar arquivos, versionar documentos ou preparar dados para arquivamento. Com o PowerShell, você pode usar os cmdlets Get-ChildItem e Rename-Item para adicionar prefixos e sufixos para fazer isso.

Você pode usar o seguinte script para adicionar um prefixo a todos os arquivos em um diretório específico.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Project_" + $_.Name)

}
      

Da mesma forma, você pode usar o script abaixo para adicionar um sufixo antes da extensão do arquivo.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_Final" + $_.Extension)

}
      

Adicione o prefixo “Backup_” e o sufixo “_2024” a todos os arquivos .txt.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Backup_" + $_.BaseName + "_2024" + $_.Extension)

}
      

Renomear arquivos com carimbos de data/hora

Renomear arquivos para incluir carimbos de data/hora pode ser incrivelmente útil para criar backups, organizar arquivos ou rastrear versões de arquivos.

Este exemplo demonstra como adicionar um carimbo de data/hora no formato “yyyyMMdd_HHmmss” como sufixo a todos os arquivos “.txt” em um diretório específico.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

    $newName = $_.BaseName + "_" + $timestamp + $_.Extension

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Se você prefere a marcação de tempo no início do nome do arquivo, pode modificar ligeiramente o script da seguinte forma.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

    $newName = $timestamp + "_" + $_.Name

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Se você deseja renomear todos os arquivos .txt no diretório C:\Documents, adicione o carimbo de data/hora de criação no início.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ("$timestamp" + "_" + $_.Name)

}
      

Se você deseja adicionar o carimbo de data/hora de modificação como um sufixo a todos os arquivos .txt.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = $_.LastWriteTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_" + $timestamp + $_.Extension)

}
      

Se você deseja adicionar o carimbo de data/hora de criação como prefixo e o carimbo de data/hora da última modificação como sufixo para todos os arquivos .docx.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $creationTimestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    $modifiedTimestamp = $_.LastWriteTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ("$creationTimestamp" + "_" + $_.BaseName + "_$modifiedTimestamp" + $_.Extension)

}
      

Gerenciamento de Colisões de Nomes de Arquivos

Tratar colisões de nomes de arquivos é importante ao automatizar operações de arquivos, como renomear ou mover arquivos, para evitar sobrescrever arquivos existentes sem intenção. Você pode verificar se um arquivo com o novo nome já existe. Se existir, você pode modificar o novo nome (por exemplo, acrescentando um contador ou um carimbo de data/hora adicional).

Exemplo: Acrescente um contador e data de criação para colisões

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $baseName = $_.BaseName

    $extension = $_.Extension

    $creationTimestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    $newName = "$baseName" + "_$creationTimestamp" + "$extension"

    # Initialize a counter for collisions

    $counter = 1

    # Check if the new name already exists

    while (Test-Path -Path (Join-Path -Path $_.DirectoryName -ChildPath $newName)) {

        $newName = "$baseName" + "_$creationTimestamp" + "_$counter" + "$extension"

        $counter++

    }

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Explicação

O script acima recupera todos os arquivos .txt. Constrói um novo nome com um carimbo de data/hora como data de criação do arquivo, depois verifica se o novo nome já existe. Se existir, ele acrescenta um contador, por exemplo, “_1”, “_2”, etc., até que um nome único seja encontrado.

Renomear Chaves do Registro

Para renomear uma chave do registro usando PowerShell, você pode usar o cmdlet Rename-Item e exportar a chave que planeja renomear antes de tentar executar o cmdlet. Este é um passo preventivo para garantir um backup caso algo dê errado.

      Rename-Item -Path "HKLM:\Software\MyCompany\Advertising" -NewName "Marketing"
      

Tutorial do Microsoft 365: Guia Completo de Administração

Saiba mais

Utilize Expressões Regulares para Renomeação Complexa

Comando do PowerShell para renomear arquivos em uma pasta

Usar o operador -replace é uma forma poderosa de renomear arquivos em uma pasta, aplicando padrões de expressão regular (regex). Essa abordagem pode ser benéfica para operações de renomeação em massa onde você precisa adicionar, remover ou modificar partes dos nomes de arquivos ou diretórios baseados em padrões específicos.

Por exemplo, você tem um monte de arquivos nomeados como “report1_2023-04-01.txt”, “report2_2023-04-02.txt”, etc., e você quer remover as datas dos nomes deles junto com o sublinhado (_).

O comando abaixo localiza todos os arquivos .txt com nomes que começam com “report*” seguidos de uma data e os renomeia removendo a data, deixando apenas “report.txt” com o número intacto, por exemplo, “report1.txt”, “report2.txt”.

      Get-ChildItem -Path "C:\Backups"-Filter "report*.txt" | Rename-Item -NewName {$_.Name -replace '_\d{4}-\d{2}-\d{2}', ''}
      

Numeração Sequencial

Adicionar numeração sequencial aos nomes de arquivos usando o cmdlet Rename-Item requer um pouco de script para implementar um contador enquanto percorre os arquivos. Isso pode ser particularmente útil para organizar arquivos em uma ordem específica ou garantir sua unicidade.

Se você deseja renomear arquivos para incluir números sequenciais (por exemplo, “Image_1.jpg”, “Image_2.jpg”), você pode usar o script abaixo.

      $counter = 1

Get-ChildItem -Path "C:\Images" -Filter "*.jpg" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Image_$counter.jpg")

    $counter++

}
      

Conteúdo relacionado selecionado:

Erros Comuns e Solução de Problemas do Rename-Item

Você pode encontrar alguns erros comuns ou problemas ao trabalhar no PowerShell para renomear arquivos, diretórios e chaves de registro. Compreender essas armadilhas potenciais e como solucioná-las pode ajudar a garantir que suas tarefas de renomeação de arquivos e diretórios ocorram sem problemas. Abaixo estão alguns erros comuns e dicas para solucionar problemas.

Erro de Arquivo Não Encontrado

O PowerShell não conseguiu encontrar o caminho porque ele não existe. Verifique se há erros de digitação no caminho do arquivo. Use o cmdlet Test-Path para verificar se o arquivo existe antes de tentar renomeá-lo.

      if (Test-Path "C:\Backups\design.txt") {

    Rename-Item -Path "C:\Backups\Design.txt" -NewName "NewDesign.txt"

} else {

    Write-Host "File does not exist."

}
      

Arquivo em Uso

O cmdlet não pode acessar o arquivo porque outro processo está sendo usado. Esse erro ocorre se o arquivo que você está tentando renomear está aberto em outro aplicativo. Feche o arquivo em qualquer outro aplicativo que possa estar usando-o. Se o problema persistir, você pode precisar encerrar processos que bloquearam o arquivo ou reiniciar o sistema para que o arquivo seja desbloqueado.

Erro de Acesso Negado

O acesso ao caminho é negado ou permissões insuficientes para modificar o arquivo ou chave do registro.

Para evitar este erro, execute o PowerShell como administrador ou verifique as permissões do arquivo ou chave e ajuste-as se necessário.

Erro de Caminho Muito Longo

O caminho especificado, nome do arquivo ou ambos são muito longos. O Windows tem um limite máximo de comprimento de caminho (geralmente 260 caracteres). Encurte o caminho movendo arquivos para um nível superior de diretório.

Erro de Destino Já Existente

Não é possível renomear porque o destino já existe. O novo nome de arquivo já existe no diretório de destino. Verifique se o arquivo de destino existe usando Test-Path. Modifique seu script para gerenciar conflitos, como adicionar um sufixo ou incrementar um número.

Erro de Caracteres Inválidos

O nome do arquivo, diretório ou registro está incorreto. O novo nome do arquivo contém caracteres inválidos. Certifique-se de que o novo nome não inclua caracteres inválidos. Use regex para remover ou substituir caracteres inválidos antes de renomear.

Conclusão

Você pode usar o comando Rename-Item no PowerShell para alterar o nome de um arquivo, diretório ou outro item no sistema de arquivos. Esse comando não altera o item em si, apenas o seu nome. Você pode usá-lo no PowerShell para renomear itens especificando o caminho atual e o novo nome. O comando também oferece opções para forçar a operação, mostrar o que aconteceria sem realmente renomear o item e pedir confirmação antes de renomear. Esse comando é útil para automatizar tarefas de gerenciamento de arquivos e diretórios, por exemplo, adicionando prefixos, sufixos e numeração sequencial aos arquivos.

Netwrix Directory Manager

FAQs

O que é o cmdlet Rename-Item no PowerShell?

O cmdlet Rename-Item é usado para renomear itens usando PowerShell, por exemplo, arquivos ou chaves de registro. Ele possui muitos parâmetros suportados, por exemplo, -Path, -Force, -WhatIf, -Confirm ou -Passthru para serem usados em diferentes cenários.

Posso mover um arquivo e renomeá-lo simultaneamente com Rename-Item?

Não, os arquivos não podem ser movidos e renomeados simultaneamente usando Rename-Item. Você deve usar Move-Item para primeiro mover o arquivo e especificar o destino com um novo nome de arquivo.

Compartilhar em

Saiba Mais

Sobre o autor

Asset Not Found

Kevin Horvatin

Arquiteto Chefe de Software

Kevin Horvatin é um Arquiteto de Software Líder na Netwrix e responsável pelo Netwrix Privilege Secure. Desenvolvedor de software há mais de 20 anos, ele trabalha com PowerShell e C# desde que foram lançados.