Respostas:
Eu sei que no seu título você diz "entre", mas tenho a impressão de que você está apenas procurando uma maneira de fazer isso e está se perguntando se essa é a melhor.
A melhor ferramenta absoluta que encontrei para isso é o Bulk Rename Utility .
Não é uma ferramenta de linha de comando, mas eles têm uma versão de linha de comando se você realmente quiser usá-la dessa maneira.
Eu usei muito a versão da GUI e é muito poderosa, muito rápida e extremamente fácil de usar.
Ah, e é GRÁTIS para uso pessoal.
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' }
O que transforma coisas como '01 - Beginning.mp3 'em' Beginning - 01.mp3 '.
Use o -WhatIf
parâmetro Rename-Item
ativado para verificar os renomeados antes de emiti-los.
... -replace '\d+ - ',''
. Além disso, acredito que o primeiro é melhor, simplesmente retirando o início usando o regex. Embora eu acredite que você deva incluir a âncora ^ no início da expressão, para que ela corresponda apenas aos nomes que começam com números.
-replace
pode ter apenas um argumento no lado direito; nesse caso, o segundo é implicitamente a string vazia.
Se você realmente deseja usar a linha de comando do Windows (se não quiser fazer o download de algo), faça o seguinte:
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 da lista em 3 partes, o #, o "-" e o restante do nome. Para cada um deles, é necessário o comando rename.
for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
O AntRenamer facilita bastante definir um padrão de renomeação; já existem muitos já preparados (e fornece uma prévia das ações):
Livre para uso pessoal e comercial.
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 modificar as partes necessárias. Adicione um "@echo off" como linha superior, salve-o e execute-o.
Outra opção: Renamer maciço de arquivos
Ele permite renomear facilmente vários arquivos e extensões de arquivo . É muito rápido e simples!
Para usuários e desenvolvedores avançados, é possível usar expressões regulares .
Veja em ação:
Eu uso a ferramenta de renomeação total do Total Commander (ctrl + M) para coisas assim. Sua ferramenta útil, uma das muitas a serem contadas, é fácil de usar e também pode empregar expressões regulares e modelos, se necessário. Ah, e obviamente fornece uma visualização antes de fazer alterações.
Esta é a terceira ou quarta pergunta que eu respondi, recomendando o Total Commander ... Eu deveria receber uma comissão deles ;-)
A ferramenta com a qual estou satisfeito é o ReNamer . Ele também suporta o salvamento de regras de renomeação, o que tem sido útil para mim, pois 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.
Eu usei o Free Commander Portable (freeware) para isso:
Para usuários e desenvolvedores avançados, sugiro o RegexRenamer .
Profissionais:
Contras:
A maneira mais fácil seria usar Renomear mestre .
Aqui está uma solução de linha de comando - um programa Java que escrevi especificamente para facilitar o trabalho com "padrões" nos nomes de arquivos. É gratuito e de código aberto, portanto, fique à vontade para modificá-lo:
RenameWand
http://renamewand.sourceforge.net/
Alguns exemplos de uso relevantes:
Solte tudo antes do "-"
no nome do arquivo:
java -jar RenameWand.jar "<a> - <b>" "<b>"
Anexe 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 maiúsculas e minúsculas:
java -jar RenameWand.jar "<album> - <artist> - <song>.<ext>"
"<artist.upper> <album.title> - <song>.<ext.lower>"
Descobri o RenPhoric cerca de um mês atrás. Soberbo. E é grátis .
Nenhuma interface complicada e eu pude renomear rapidamente exatamente como eu queria. Capaz de expressão regular. Não usei mais nada desde então.
Como @zdan acima, eu fiz isso por linha de comando (usando "cmd.exe" no Windows). Foram necessários alguns ajustes para o meu caso em particular, mas um pouco de pesquisa o resolveu.
Como Zdan, eu saída a lista para um arquivo TXT, em seguida, usado tokens
e delims
para renomear os arquivos de acordo. No meu caso, comecei com uma lista de arquivos com o seguinte nome:
name-01-02-2012.csv
Eu queria que a parte da data do arquivo estivesse na ordem de y / m / d, com a parte "name" no final, para que fosse assim:
2012-01-02-name.csv
Para fazer isso em massa, usei o seguinte código. Observe que, ao fazer dessa maneira, TODAS as partes do nome do arquivo são consideradas, incluindo a extensão ".csv". Isso me enganou 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
O tokens
são as "partes" do nome do arquivo, o delims
são os separadores. Observe que, no meu caso, eu tinha 2 delimitadores (um traço e um ponto).
Pessoalmente, não ligo para o aplicativo "Renomear em massa". Como outros já mencionaram, a GUI é atroz e não muito intuitiva. Com um pouco de pesquisa e codificação simples, essas coisas podem ser muito mais eficientes e rápidas.
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 http://fart-it.sourceforge.net/ FUNCIONA MUITO! também pode renomear palavras nos arquivos txt.
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\0\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
-f
opção, conforme listado.
O script de renomeação múltipla é uma alternativa de código aberto à ferramenta Total Commanders Multi Rename, que você pode dirigir via script. Ele pode usar plugins do TC para obter informações de metadados.
@echo off setlocal enabledelayedexpansion defina X = 5 defina FOLDER_PATH =. pushd% FOLDER_PATH% para %% f em (*) faça se %% f neq% ~ nx0 ( defina "filename = %% ~ nf" defina "filename =! filename: ~% X%!" ren "%% f" "! nome do arquivo! %% ~ xf" ) popd
salve isso em um arquivo em lotes e execute
set /p "X=Enter the value for X: "
Eu uso o Blackboard para administrar cursos em uma universidade. Quando faço o download de uma tarefa em massa (no Blackboard, clique na parte superior da coluna de classificação e, em seguida, em "download do arquivo de atribuição", o Blackboard adiciona várias coisas extras ao nome do arquivo - muitas vezes tornando o nome do arquivo muito longo para ser válido no Windows.
Aqui está a aparência deles:
Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx
E é isso que eu queria
studentname.docx
Então, usei a abordagem recomendada por @zdan e @ gtr1971, abrindo uma janela de comando na pasta com os arquivos dentro (CMD.EXE). Em seguida, execute este comando para colocar todos os nomes de arquivo em um documento.
dir /b >filelist.txt
Edite o documento e remova nomes de pastas etc.
Use este comando para substituir as coisas de nome de arquivo adicionadas pelo Blackboard apenas pelo nome de usuário e pela extensão do 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 outra pessoa também.
Aqui está outro programa simples chamado File Attribute Changer que você pode usar para renomear arquivos. É um programa portátil, para que você possa carregá-lo em uma unidade USB.
Eu desenvolvi um utilitário de linha de comando híbrido JScript / lote 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 a partir do XP. A documentação completa está incorporada no script.
Supondo que o JREN.BAT esteja no seu diretório atual, ou melhor ainda, em algum lugar no seu caminho, sua tarefa de renomeação se tornará trivial.
jren "^\d+[ -]+(.+)\.txt$" "$1" /i
ou
jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"
Existem muitas opções, incluindo a /S
opção que executa recursivamente a renomeação nos subdiretórios.
Se você precisa de poder sério e está disposto a gastar o dinheiro ... O PowerGrep é uma das ferramentas mais poderosas e versáteis do mercado ... você pode renomear quase tudo com o PowerGrep ... até pesquisa e substituição binárias ... foi criado por RegEx Guru, Jan Goyvaerts .