Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo off

Set "Where=Z:\kuku"
Set "Mask=*.jpg"

SetLocal EnableExtensions EnableDelayedExpansion
Set "Last=''"

for /f "usebackq delims=" %%i in (`dir "%Where%\%Mask%" /B /O:-N /A:-D 2^>nul`) Do (
	Set "Name=%%i"
	Set /A Num=1!Name:~0,2!+1
	Set "Name=!Name:~2,9999!"
	Ren "%Where%\%%i" "!Num:~1,2!!Name!"  
	If !Last!=='' Set Last=Ren "%Where%\!Num:~1,2!!Name!" "01!Name!"
)
!Last!
Пояснение
Имена файлов могут начинаться от 01 до 99 максимум. Dir c ключом /O:-N сортирует имена файлов по имени в обратном порядке от 99 до 01. Тупо переименовываем все файлы на имя с префиксом на 1 больше. При этом 99, если он был, переименуется в 00, что за пределами диапазона имён. Для самого первого в списке переименованного файла (со старым максимальным номером) запоминаем в переменную команду на переименование его в 01. По завершении цикла запускаем эту команду.
Маску, естественно, можно указать и ??.jpg
Хватает одного цикла и не делается никаких копий.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-04-2016 в 23:44.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:01, 07-04-2016 | #20