Como posso massa renomear arquivos?

124

Eu tenho vários arquivos nomeados com o padrão 99 - DescriptiveName.txt e gostaria de remover o número da frente, por isso só tenho DescriptiveName.txt .

Como posso fazer isso? Posso fazê-lo a partir da linha de comando ou há algum utilitário que possa fazer isso?

    
por CodeSlave 28.09.2014 / 02:22

22 respostas

93

Eu sei no 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 esse é o melhor caminho.

A melhor ferramenta que eu encontrei para isso é Bulk Rename Utility .

Nãoéumaferramentadelinhadecomando,maselestêmuma versão da linha de comando se você realmente quiser para usá-lo dessa maneira.

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

Ah, e é GRÁTIS para uso pessoal.

    
por 09.02.2017 / 20:09
56

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 parâmetro -WhatIf em Rename-Item para verificar renomeações antes de emiti-las.

    
por 14.01.2014 / 10:49
24

Se você realmente quiser usar a linha de comando do Windows (se você não quiser fazer o download de 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 rename.

    
por 07.08.2009 / 19:53
24

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

Gratuito para uso pessoal e comercial.

    
por 09.02.2017 / 20:10
19

old school:

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 remover 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.

    
por 07.08.2009 / 20:05
16

Outra opção: Renomeador de arquivos em massa

Permite facilmente renomear vários 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:

    
por 17.11.2015 / 22:17
13

Eu uso a ferramenta multi-rename do Total Commander (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 você tem uma prévia 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; -)

    
por 23.08.2009 / 10:56
11

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 as mesmas renomeações.

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

    
por 04.03.2014 / 08:31
5

Eu usei Free Commander Portable (freeware) para isso funcionar:

  1. Selecione ou navegue até os arquivos ou diretórios para renomear
  2. Pressione [Ctrl-M] (ou Arquivo> Multi-renomear)
  3. preencha os campos como faz sentido para sua circunstância
  4. verifique se a visualização mostra o que você espera
  5. Ir!
por 28.11.2009 / 00:02
4

Para usuários avançados e desenvolvedores, sugiro RegexRenamer .

Pro:

  • UI muito simples;
  • Expressões regulares que os desenvolvedores conhecem;
  • GPLv2;

Con:

  • Não é uma linha de comando! :)
por 03.01.2013 / 11:47
3

A maneira mais fácil seria usar Renomear o mestre .

    
por 30.07.2009 / 22:37
3

Aqui está uma solução de linha de comando --- um programa em Java que escrevi especificamente para facilitar o trabalho com "padrões" em nomes de arquivos. É grátis e de código aberto, então sinta-se à vontade para modificá-lo:

RenameWand link

Alguns exemplos de uso relevantes:

Solte tudo antes do "-" no nome do arquivo:

java -jar RenameWand.jar  "<a> - <b>"  "<b>"

Prefira um número de 3 dígitos ao nome do arquivo, classificando pela hora da última modificação:

java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

Reorganize partes do nome do arquivo e altere o caso:

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"
    
por 23.08.2009 / 08:16
3

Descobri RenPhoric há cerca de um mês. Excelente. E é grátis .

Nenhuma interface complicada e eu fui rapidamente capaz de mudar o nome exatamente como eu queria. Regular Expression capaz. Não usei mais nada desde então.

    
por 23.08.2009 / 11:31
2

Eu gosto do WildRename da Cylog. É poderoso, mas fácil de usar e tem muitos recursos:

  1. rápido
  2. manipulação de string
  3. contadores
  4. curingas
  5. expressões regulares
  6. substituição
  7. conversão de casos
  8. logging
  9. simulação (mostra os resultados sem aplicá-los)

    
por 14.08.2011 / 18:27
2

Como @zdan acima, eu fiz isso pela linha de comando (usando "cmd.exe" no Windows). Demorou alguns ajustes para o meu caso particular, mas um pouco de pesquisa resolveu isso.

Como zdan, envio a lista para um arquivo TXT e usei tokens e delims para renomear os arquivos de acordo. No meu caso, comecei com uma lista de arquivos assim chamados:

name-01-02-2012.csv

Eu queria que a parte da data do arquivo estivesse na ordem y / m / d, com a parte "name" no final para que ela fosse lida assim:

2012-01-02-name.csv

Para fazer isso em massa, usei o seguinte código. Observe que, ao fazer isso, TODAS as partes do nome do arquivo são consideradas, incluindo a extensão ".csv". Isso me divertiu da primeira vez.

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

As tokens são as "partes" do nome do arquivo, os delims são os separadores. Note que no meu caso, eu tinha 2 delimitadores (um traço e um ponto).

Eu pessoalmente não ligo para o aplicativo "Renomear em massa". Como outros já mencionaram, o GUI é atroz e pouco intuitivo. Com um pouco de pesquisa e codificação simples, essas coisas podem ser feitas de maneira muito eficiente e rápida.

    
por 10.09.2012 / 17:11
2

Nome engraçado e ferramenta de linha de comando muito poderosa, muito rápida e extremamente fácil de usar. "Localizar e substituir texto" FART link FUNCIONA ÓTIMO! pode renomear palavras em arquivos txt também.

USO

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF
Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF%pre%\t\n\r\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes
\t\n\r\ etc.) --cvs Skip cvs dirs; execute "cvs edit" before changing files -a --adapt Adapt the case of replace_string to found string -b --backup Make a backup of each changed file -p --preview Do not change the files but print the changes
    
por 30.03.2013 / 21:44
2

O script multi rename é uma alternativa de código aberto à ferramenta Total Commanders Multi Rename, que você pode usar como script. Pode usar plugins TC para informações de metadados.

link

    
por 04.11.2013 / 10:58
2
@echo off
setlocal enabledelayedexpansion
set X=5
set FOLDER_PATH=.
pushd %FOLDER_PATH%
for %%f in (*) do if %%f neq %~nx0 (
    set "filename=%%~nf"
    set "filename=!filename:~%X%!"
    ren "%%f" "!filename!%%~xf"
)
popd

salve isso em um arquivo de lote e execute

    
por 04.07.2014 / 07:53
1

Eu uso o Blackboard para ministrar cursos em uma universidade. Quando eu faço o download de uma tarefa em massa (no Blackboard, clique em cima da coluna de classificação e, em seguida, "download do arquivo de atribuição") adiciona um monte de material extra ao nome do arquivo - muitas vezes tornando o nome do arquivo muito longo para o Windows. p>

Veja como eles se parecem:

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

E é isso que eu queria

studentname.docx

Então eu usei a abordagem que @zdan e @ gtr1971 recomendaram, abrindo uma janela de comando na pasta com os arquivos dentro (CMD.EXE). Em seguida, execute este comando para colocar todos os nomes de arquivos em um documento.

dir /b >filelist.txt

Edite o documento e remova os nomes das pastas, etc.

Use este comando para substituir as coisas do nome do arquivo adicionado do Blackboard apenas com o nome de usuário e a extensão de arquivo.

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

Espero que isso ajude alguém também.

    
por 02.03.2013 / 21:08
1

Aqui está outro programa simples chamado File Attribute Changer que você pode usar para renomear arquivos. É um programa portátil, então você pode carregá-lo em um drive USB.

link

    
por 11.07.2013 / 01:07
1

Desenvolvi um utilitário de linha de comando JScript / batch híbrido chamado JREN.BAT que pode renomear arquivos ou pastas executando uma pesquisa de expressão regular e substituindo os nomes. É um script puro que será executado nativamente em qualquer máquina Windows do XP. A documentação completa está incorporada no script.

Supondo que JREN.BAT esteja em seu diretório atual, ou melhor ainda, em algum lugar dentro de seu caminho, então sua tarefa de renomear se torna trivial.

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

ou

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

Existem muitas opções, incluindo a opção /S que recursivamente realiza a renomeação em subdiretórios.

    
por 01.12.2014 / 03:56
0

Se você precisa de muito poder e está disposto a desembolsar o dinheiro ... PowerGrep é uma das ferramentas mais poderosas e versáteis no mercado ... você pode renomear quase tudo com PowerGrep ... até mesmo busca binária e substituir ... ela é criada pelo RegEx Guru, Jan Goyvaerts .

    
por 18.03.2015 / 01:47