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.