ae_ph
@ae_ph
I'm a owl )

Как в bat файле переименовать файлы?

У меня есть .bat файл, рядом лежит папка.
В папке лежат .jpg файлы с разными именами. (1234567890.jpg, helloWorld.jpg, img-23012010.jpg)
Я пытаюсь написать в .bat файле чтобы он все эти файлы в этой папке переименовал.
Вот с таким названием file-001.jpg file-002.jpg file-003.jpg ... file-069.jpg
Я не могу реализовать пересчёт файлов..
Вот примеры которые работают не корректно
set dir=Result\
forfiles /p %dir% /m *.jpg /c "cmd /c ren @file out-0001.jpg"
pause

^ Переименовывает только 1 файл, другие соответственно говорят НЕТ, такой уже среди нас есть..
SETLOCAL EnableDelayedExpansion
for /f %%I in ('dir /b ^| findstr /r ".*[.]jpg$"') do set "x=%%I" & ren "%%I" "name-001!x:~0!"
pause

^ Тут переименовывает все файлы, но когда лежит в папке с ними, я тут не могу понять как вынести его за пределы папки и путь указать. Ну и соответственно как обычно не переименовывает задавая нумерацию.
set dir="Result\*.jpg"
set new="new_??.jpg"
ren %dir% %new%
pause

^ Тут переименовывает все, но опять-же не могу сделать так, что-бы задавал счёт (нумерацию) файла.
  • Вопрос задан
  • 5187 просмотров
Решения вопроса 1
ae_ph
@ae_ph Автор вопроса
I'm a owl )
Вот решение
Этот .bat файл переименует Jpg файлы из папки вот в такие файлы file-000.jpg, file-001.jpg, file-002.jpg
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause


SetLocal EnableDelayedExpansion Раскрытие переменных через знаки (!)
cd /d Result заходим в папку Result
set "count=1000" переменная в которой я обозначил количество нулей file-001.jpg
set a="*.jpg" переменная обозначает какие файлы ищем.

(`dir /b /o:-d /tc %a%`)
dir - Позволяет отобразить список файлов и подкаталогов. Далее сортируем.
/b - Вывод только имен файлов.
/o:-d - Сортировка списка отображаемых файлов в обратном порядке ( от новых к старым ).
/tc - Сортировать по времени создания файла
%a% - Вызываем переменную

usebackq Задает возможность использования кавычек для имен файлов Такие вот> ".
Задает исполнение строки, заключенной в обратные кавычки, как команды Такие вот> `,
а строки в одиночных кавычках — как команды в символьной строке Такие вот> '.

delims=xxx Задает набор разделителей. Заменяет набор разделителей по умолчанию, состоящий из пробела и символа табуляции.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы