Переименовать файлы массово
Есть проблемка. Мне надо переименовать очень большое количество файлов, они имеют формат
img_число
тоесть:
img_1.png
img_2.png
img_3.png
...
img_120.png
img_121.png
...
img_1796.png
Я не особо понял, как мне средствами Windows преобразовать к такому формату (добавить нули):
img_0001.png
img_0002.png
img_0003.png
...
img_0120.png
img_0121.png
...
img_1796.png
Не особо понял как преобразить, прошу помочь.
for /l %%i in (1,1,1796) do rename img_%%i.png img_%04i.png
Ответы (2 шт):
Немного костыльно, но зато рабочий вариант.
Можно изменять количество нолей и циклов, в зависимости сколько у вас файлов.
for /l %%i in (1,1,9) do (
ren img_%%i.png img_000%%i.png
)
for /l %%i in (10,1,99) do (
ren img_%%i.png img_00%%i.png
)
for /l %%i in (100,1,999) do (
ren img_%%i.png img_0%%i.png
)
Рабочий пример использовался для последовательного переименования всех PNG-файлов во временном каталоге по порядку, получая их из вывода команды DIR. Порядок сортировки по дате задается параметром /o:d (В Вашем случае сортировка по имени - /o:n)
Принцип.
Порядковый номер (переменная !i!) расширяется на несколько разрядов, добавлением слева 4 нулей - значение помещается в переменную !nm!. Затем переменная обрезается справа на 4 разряда. Для того чтобы оставить спереди нужное количество нулей.
После этого файл (имя в переменной %%i) переименовывается в порядковый номер. (В Вашем случае можно переименовывать в img_!nm!.*)
rem========== Renaming files by order
setlocal EnableDelayedExpansion
set i=0
for /f %%i in ('dir /b /o:d /t:w "%tmp%\png\*png"')do (
set /a i+=1
set nm=0000!i!
set nm=!nm:~-4!
ren %%i !nm!.*
)
Endlocal