Questão Como posso massa renomear arquivos?


Eu tenho um monte de arquivos nomeados com um padrão 99 - DescriptiveName.txt e eu gostaria de remover o número da frente, então eu só tenho DescriptiveName.txt.

Como posso fazer isso? Posso fazê-lo a partir da linha de comando ou existe um utilitário que pode fazer isso?


117


origem




Respostas:


Eu sei em seu título que você diz "in dos", mas tenho a impressão de que você está apenas procurando uma maneira de fazer isso e se perguntando se essa é a melhor maneira.

A melhor ferramenta absoluta que eu encontrei para isso é Renomear Utilitário em Massa.

Bulk Rename Utility

Não é uma ferramenta de linha de comando, mas eles têm versão da linha de comando se você realmente quiser usá-lo dessa maneira.

Eu usei muito a versão GUI, e é muito poderosa, muito rápida e extremamente fácil de usar.

Ah, e é LIVRE para uso pessoal.


91



Infelizmente a ferramenta não é gratuita para uso comercial :( - AntonK
É por isso que eu disse que era grátis para uso pessoal. - Jim McKeeth
Esta é uma ferramenta super rápida. Ele resolveu meu problema com 6.000 arquivos em segundos, usando várias lógicas de busca e substituição. É como usar o Notepad ++, mas editando milhares de arquivos. Uma ótima solução, obrigado! - Peanuts


Um pequeno script do PowerShell:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

Combinado com expressões regulares mais complexas, isso pode se tornar algo como:

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

Que transforma coisas como '01 - Beginning.mp3 'em' Beginning - 01.mp3 '.

Use o -WhatIf parâmetro on Rename-Item para verificar renomeações antes de emiti-las.


55



@sysrqb, por favor, pesquise um pouco mais. - Joey
Substituir não requer duas expressões de string? O segundo tem dois, o primeiro não. ... -replace '\d+ - ',''. Além disso, acredito que o primeiro é melhor, simplesmente retirando o começo usando regex. Embora eu acredite que você deve incluir a âncora no início da expressão, então ela só combina nomes que começam com números. - Xalorous
@Xalorous: Bem, você poderia simplesmente experimentá-lo. -replace pode ter apenas um argumento no lado direito, caso em que o segundo é implicitamente a cadeia vazia. - Joey
Isso me salvou .. Bulk Rename Utility apenas falha agora e eu tentei tantas outras soluções. Isso é muito melhor para pessoas que estão confortáveis ​​com o regexp. Muito obrigado !! - Inkh Su Tesou


Se você realmente quer usar a linha de comando do Windows (se você não quiser baixar algo), você pode fazer assim:

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

A primeira linha gera a lista de arquivos em um arquivo chamado fileList.txt. A segunda linha separa cada um dos nomes na lista em 3 partes, o #, o "-" e o resto do nome. Para cada um deles, o comando renomear.


24



Remova a primeira linha para simplificar e faça: for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
Eu sei que isso é antigo, mas ainda é uma resposta sólida - somente o% l (% L) deve ser% k (% K) [incremento de tokens de% i (% I) para que eu, J, K ...] - ongle


Antenamerer torna muito fácil definir um padrão de renomeação; há muitos já preparados (e dá uma prévia das ações):

AntRenamer

Livre para uso pessoal e comercial.


24





moda antiga:

Você pode fazer um DIR e redirecionar a saída para um arquivo, como em DIR * .TXT> TEMP.BAT

Em seguida, use um editor para retirar o que você não precisa e modifique as partes de que você precisa. Adicione um "@echo off" como a linha superior, salve-o e execute-o.


18



Eu tenho esta referência de página de um doutorado da velha escola neste: dostips.com/DosCommandIndex.htm; É incrível o que você pode fazer com (bom?) DOS antigo! - nik


Outra opção: Renomeador de Arquivos Maciço

Permite facilmente renomear múltiplo arquivos e extensões de arquivo. É muito rápido e simples!

Para usuários avançados e desenvolvedores, é possível usar expressões regulares.

Veja em ação:

enter image description here


16



Btw como podemos selecioná-lo para abrir todos os arquivos dentro de subpastas? Eu tenho uma pasta raiz com cerca de 50 subpastas (recursivamente) e vários arquivos dentro deles. - Pacerier
@Pacerier Eu acho que o seletor de arquivos Java não permite isso. Eu tive a idéia de permitir a seleção de uma pasta e a pesquisa recursiva pode ser incluída. Vou anotar isso e adicioná-lo em uma versão futura! - IvanRF


eu uso Comando totalmulti-rename ferramenta (ctrl + M) para coisas como esta. Sua ferramenta útil, uma das muitas para contar, é fácil de usar e também pode empregar expressões regulares e modelos, se necessário. Ah, e, obviamente, dá-lhe uma pré-visualização antes de fazer qualquer alteração.

Esta é a terceira ou quarta pergunta que eu respondi recomendando o Total Commander ... Eu deveria estar recebendo uma comissão deles ;-)


13





A ferramenta que me satisfaz é ReNamer. Ele também suporta o salvamento de regras de renomeação, o que tem sido útil para mim, já que muitas vezes faço os mesmos renomeamentos.

Abaixo está um exemplo de como excluir o texto antes do primeiro traço, mas há muitas outras regras que você pode definir.

enter image description here


11