Renomear em massa o nome do arquivo do meio do Windows via CLI?


13

Arquivos originais

File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt

Saída desejada

File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt

Um único arquivo pode ser renomeado facilmente com ren.

ren "File 2 - Example.txt" "File 02 - Example.txt"

Seria possível renomeá-lo em massa com o Windows renou a renameferramenta?


1
Utilitário gratuito agradável para facilitar esse tipo de tarefa .... bulkrenameutility.co.uk/Main_Intro.php
Moab

Concordo. Posso citar uma abundância de soluções baseadas em GUI para isso, e me pergunto por que a insistência em CLI
MAWG diz Reintegrar Monica

@ Makaw, você pode fazer scripts com essas ferramentas GUI?
Sabrina

Eu poderia - usando o AutoIt -, mas provavelmente recomendaria :-) Apenas me perguntei se havia um requisito difícil para a CLI, e agora parece que existe. Obrigado por esclarecer
Mawg diz reintegrar Monica

Respostas:


13

Seria possível renomeá-lo em massa com a ferramenta de renomeação ou renomeação do Windows?

Sim, mas requer um arquivo em lotes.

test.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

exemplo:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

Leitura adicional


17

Esse liner do PowerShell expandirá todos os números no nome do arquivo para dois lugares .PadLeft(2,'0'):
(e deixa os números com mais lugares intocados)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

para estar no tópico, agrupado em um arquivo cmd de linha / lote:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

Para estar no lado seguro antes de executar os comandos, anexe

  • -Confirm que pergunta antes de renomear
  • -WhatIfque lista todas as mudanças de nome que ele executaria sem o parâmetro

bem na frente do último "


3

Edit: Acabei de notar que esta pergunta é especificamente sobre renomear a partir da linha de comando, por isso não responde diretamente à pergunta ... Vou mantê-la por enquanto, esperando que seja útil para outras pessoas.


O gerenciador de arquivos do Total Commander possui uma excelente ferramenta de renomeação em massa. Ele inclui muitos recursos, incluindo visualização de renomeação, máscaras de renomeação diferentes, expressões regulares, renomeação de arquivos na hierarquia de pastas inteira e muito mais. Ao mesmo tempo, é bastante fácil de usar.

Aqui está uma captura de tela para demonstrar seu uso:

Exemplo de renomeação total do Commander total

Passo a passo:

  1. Faça o download e execute o Total Commander.
  2. Native na pasta com os arquivos para renomear.
  3. Marque os arquivos para renomear:
    • Opção 1 - Ctrl+ Apara marcar todos os arquivos na pasta.
    • Opção 2 - Marque os arquivos um por um, usando a Spacetecla ou o botão direito do mouse.
    • Opção 3 - Abra "Localizar arquivos" ( Alt+ F7), digite *.txtna caixa "Pesquisar", clique em "Iniciar pesquisa", pressione "Feed to listbox" e marque os arquivos com Ctrl+ A. Use esta técnica se desejar renomear arquivos também em pastas internas.
  4. Pressione Ctrl+ Mpara abrir a ferramenta Multi-Rename.
  5. Defina os valores desejados nas caixas "Procurar" e "Substituir por". Se estiver usando uma expressão regular, marque a caixa RegEx.
  6. Clique em "Iniciar!".

-2

ren *.bat *.txttrabalhará para renomear extensões em todos os arquivos correspondentes, mantendo a outra parte do nome. Você não pode abusar disso para executar uma sequência de rencomandos?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (lidar com outros pendentes como File 022 - Example.txt

1
Isso NÃO é útil, você verificou o que seu comando fará? 2-> 0, 22-> 02, 15-> 05.
LotPings

Não, eu não tenho um sistema operacional Windows, então não tentei. Mas lembro-me há anos que a REN pode fazer isso. Eu pretendia dar uma sugestão de qualquer maneira.
Douglas Held
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.