Вот сценарий. Просто поместите скрипт в свою папку и запустите его.
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *') do (
if not "%%~nxi"=="%~nx0" (
ren "%%i" "!a!"
set /a a+=1
)
)
Если вы хотите сохранить расширения, т.е. переименовать "IMG-12223.jpg", "IMG-12224.jpg" и т.д., чтобы "1.jpg", "2.jpg", и т.д., вы может использовать следующий скрипт.
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *.jpg') do (
ren "%%i" "!a!.jpg"
set /a a+=1
)
[Update] Here're объяснения линий, упомянутых в комментарии Джека.
setlocal EnableDelayedExpansion
В общем, мы хотим, чтобы переменная a
быть отложено расширение, когда он выполняется, но не читается строка. Без него переменная a
не может получить увеличенное значение, но всегда 1.
Подробную информацию об EnableDelayedExpansion см. В ответе https://stackoverflow.com/a/18464353/2749114.
for /f "delims=" %%i in ('dir /b *.jpg')
Здесь dir
с /b
опции перечислены только имена файлов всех JPG файлов.
Цикл for
перемещает и переименовывает все файлы jpg.
Для параметра delims
, поскольку символ разделителя по умолчанию - это пробел, без опции delims=
, он не работает с файлами изображений с пробелами в именах файлов. И.Е. для файла изображения с именем «img with spaces.jpg», без опции, значение %%i
«img», но не полное имя «img with spaces.jpg», что неверно.
Для петли for
, пожалуйста, обратитесь к странице http://ss64.com/nt/for_f.html.
У меня есть изменить его if not "%%~nxi"=="%~nx0"
, чтобы быть более точным. И добавленные коды были обновлены.
Это на самом деле используется, чтобы избежать переименования самого файла bat. Если мы ограничиваем переименование только файлами «jpg», тогда строка не нужна.
%%~nxi
- это имя файла с расширением для каждого пройденного файла. И %~nx0
- это исполняемый файл bat с расширением. Подробнее см. На странице DOS BAT file equivalent to Unix basename command?.
Просто подсказка: Freeware мультимедийный просмотрщик [IrfanView] (http://www.irfanview.com/) имеет встроенное [пакетное переименование] (http://graphicssoft.about.com/cs/renamers/ht /irfanviewrename.htm) для переименования изображений с помощью счетчика. Также shareware file manager [Total Commander] (http://www.ghisler.com/) имеет функцию [multi-rename] (http://www.ghisler.com/advanced.htm#tutorial_rename) с еще большим количеством опций и очень проста в использовании. На мой взгляд, это не имеет смысла, используя пакетный файл для такой задачи переименования файлов, которая не выполняется автоматически в качестве запланированной задачи. – Mofi