Cambiar el nombre de varios archivos con solo una parte del nombre del archivo original

Cambiar el nombre de varios archivos con solo una parte del nombre del archivo original

Quiero cambiar el nombre de 40 archivos png en una carpeta, tienen nombres muy largos. Se nombran en serie así, "bla...bla...blah160.png", "bla...bla...blah200.png", es decir, después de 40 caracteres alfanuméricos viene el número de serie de tres dígitos (160), Quiero que solo queden los últimos tres dígitos en el nombre del archivo, por lo que "bla...bla...blah160.png" debería convertirse en "160.png". ¿Existe un comando DOS (cmd.exe) simple de una línea? en ganar 7?

Respuesta1

El siguiente archivo cmd debería hacer el trabajo:

@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 la línea "del" para eliminar la versión con el nombre largo.

Es posible resumirlo en menos líneas, pero lo haría menos comprensible.

información relacionada