Renomear arquivos múltiplos com apenas uma parte do nome do arquivo original

0

Quero renomear 40 arquivos png em uma pasta, eles têm nomes muito longos. Eles são nomeados em série assim: "blá ... blá ... blá160.png", "blá ... blá ... blá200.png", ou seja, após 40 caracteres alfanuméricos, vem o número de série em três dígitos (160), Quero que apenas os três últimos dígitos permaneçam no nome do arquivo, portanto, "blá ... blá ... blá160.png" deve se tornar "160.png", existe um comando simples de uma linha DOS (cmd.exe) na vitória 7?

Vikram
fonte
Sempre existem exatamente 40 caracteres antes do número? O número sempre tem n dígitos? Sempre existem espaços antes do número? Você pode ser mais específico sobre os nomes dos arquivos?
Werner Henze
@ WernerHenze, sim, sempre 40 caracteres (alfabetos em minúsculas e caracteres especiais = &) antes do número de três dígitos e sem espaços em qualquer lugar, por isso é sempre um nome de arquivo com 43 caracteres e também os 40 caracteres iniciais são sempre os mesmos para todos os 40 nomes de arquivos o que difere são os três últimos dígitos
Vikram

Respostas:

0

O seguinte arquivo cmd deve fazer o trabalho:

@echo off & setlocal

for %%F in (*.png) do call :doIt %%F
goto xit

:doIt
set name=%~n1
set num=%name:~-3%
set ext=%~x1
set lentest=%name:~40,3%

if not [%lentest%]==[] (
  copy "%1" %num%%ext%
::  del "%1"  
)
goto :EOF

:xit
endlocal

Descomente a linha "del" para excluir a versão com o nome longo.

É possível compactar isso em menos linhas, mas isso tornaria menos compreensível.

Axel Kemper
fonte