Переименование нескольких файлов с использованием только части исходного имени файла

Переименование нескольких файлов с использованием только части исходного имени файла

Я хочу переименовать 40 файлов png в одной папке, у них очень длинные имена. Они называются по порядку, например, "blah...blah...blah160.png", "blah...blah...blah200.png", т.е. после 40 буквенно-цифровых символов идет серийный номер из трех цифр (160), я хочу, чтобы в имени файла остались только последние три цифры, поэтому "blah...blah...blah160.png" должно стать "160.png", есть ли простая однострочная команда DOS (cmd.exe) в win 7?

решение1

Следующий cmd-файл должен справиться с этой задачей:

@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

Раскомментируйте строку «del», чтобы фактически удалить версию с длинным именем.

Можно было бы втиснуть это в меньшее количество строк, но это сделало бы текст менее понятным.

Связанный контент