Показать сообщение отдельно
Старый 18.03.2015, 23:07     # 1
MeatEater
Member
 
Регистрация: 25.08.2002
Сообщения: 207

MeatEater Путь к славе только начался
Question Файл .BAT для стековой перенумерации файлов - нужен совет

Проблема такая. Есть директория, в которой находятся файлы с различными расширениями, а имена этих файлов имеют одинаковую структуру: они начинаются с цифры от 1 до 9, за ней идет подчеркивание, далее неважно что, и расширение, то есть такие файлы, например:

3_abcd.txt
4_sadghj_70.zip
9_ddddddddddddd.jpg

Файлов в директории может быть от 2 до 9.

BAT файл должен знать переменную, которая определяет глубину стека - ее можно установить тоже от 2 до 9. Пусть это будет
set STACKDEPTH=7
- глубина стека равна 7. В таком случае, BAT прежде всего должен удалить из директории все файлы, первый знак в имени которых >=STACKDEPTH, если такие файлы есть (это файлы 7_*.*, 8*.* и 9*.*).

Это будет DEL по маске в цикле, например, и хорошо бы проверять что-то вроде if exist.

Далее, нужно перенумеровать файлы, т. е. изменить только цифры в начале имени файла, сохранив всю последующую информацию, начиная с подчеркивания и заканчивая расширением файла. При этом первую цифру в каждом имени файла нужно увеличить на 1, примерно так:

6_*.* должен стать 7_*.*
и т. д., до
1*.* должен стать 2_*.*

Для этого дела как бы напрашивается цикл с токенами типа такого:
for /f "tokens=*" %%i ... do ( rename "%...%\%%i" )

Ограничение: НЕЛЬЗЯ удалять или переименовывать файлы, которые начинаются не с цифры и подчеркивания. То есть файл типа Read.me должен сохраниться.

Вроде как оно теоретически понятно, но в целом не складывается. Если кому-то не очень трудно, был бы весьма признателен за кусок кода. Думаю, что не я один нашел бы применение такому стеку. Можно в плане развития идеи сделать стек и от 01 до 99, обязательно с лидирующим нулем, но вряд ли это нужно рядовому юзеру, а нерядовой имеет другие инструменты.

Спасибо.

P. S. Собственно, это мне нужно как замена стека nnBackup, в связи с переходом на архивацию от zip на 7z, из-за ограничений по размеру архива у zip в моей конкретной ситуации. Да, nnBackup может работать с внешним архиватором, но не всегда хочет. Не принципиально для BAT, но работать ему предстоит на Win7 32 или 64. Спасибо.
MeatEater вне форума