Переименовать файлы массово

Есть проблемка. Мне надо переименовать очень большое количество файлов, они имеют формат

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 шт):

Автор решения: sepera_okeq

Немного костыльно, но зато рабочий вариант.

Можно изменять количество нолей и циклов, в зависимости сколько у вас файлов.

    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
    )
→ Ссылка
Автор решения: Daemon-5

Рабочий пример использовался для последовательного переименования всех 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 
→ Ссылка