Я хочу переименовать 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», чтобы фактически удалить версию с длинным именем.
Можно было бы втиснуть это в меньшее количество строк, но это сделало бы текст менее понятным.