Renomeando vários arquivos com apenas uma parte do nome do arquivo original

Renomeando vários arquivos com apenas uma parte do nome do arquivo original

Quero renomear 40 arquivos png em uma pasta, eles têm nomes muito longos. Eles são nomeados serialmente 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 últimos três dígitos permaneçam no nome do arquivo, então, "blá...blá...blá160.png" deve se tornar "160.png", existe um comando DOS (cmd.exe) simples de uma linha na vitória 7?

Responder1

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

Remova o comentário da linha “del” para excluir a versão com o nome longo.

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

informação relacionada