![]() |
не работает счетчик переименования файлов
всем привет! помогите со счетчиком в bat-файле. Задача следующая: привести имена файлов к виду name_01.txt, name_02.txt, name_03.txt и тд.
Сам додумался до вот этого. Код:
@echo off 1. если файлов не более 37, то имя присваивается name_1.txt name_2.txt ......... name_37.txt 2. как только добавляется 38-й файл, имена присваиваются вот так name_1.txt name_10.txt name_38.txt ........ name_73.txt 3. когда файлов более 100, ситуация для меня еще более странная name_1.txt name_10.txt name_100.txt Вообщем что-то не так, а вот что не пойму.... |
попробуйте так
Код:
@echo off |
Я бы вырезал:
|
|
Цитата:
А нужно name_01.txt, name_02.txt .......... name_99.txt, name_0a.txt и т.д. не совсем понял, что значит iCount:~-4 ? |
megaloman, интересно. Подводных камней (для данного контекста, разумеется) не будет?
Цитата:
Цитата:
|
Iska, Будет подводный камень: если число файлов >9999. Или если какой-либо файл имеет имя name_xxxx.txt. Наверное лучше всё-таки безусловным образом наращивать счетчик. Или анализировать перед переименованием имена файлов. Но проблема в другом, Xeruvim4ik, похоже, хочет получить шестнадцатиричную нумерацию 01 02 ... 0f 10 11 ... ff, при этом число файлов не более 255. И, самое главное, у меня не получается отобразить и нарастить шестнадцатиричное число, похоже, при присваивании автоматически шестнадцатиричное конвертируется в десятичное:
Set /A iCount = 0xff Echo %iCount% Получаем 255 |
Цитата:
|
Извините, коллеги. А ни кого не смущает тот факт, что переименование ведется в той же самой папке откуда берутся исходные файлы? Цикл For будет\может повторно перебирать уже переименованные файлы, если они окажутся по алфавиту после обрабатываемых в данный момент...
|
Цитата:
Цитата:
Цитата:
|
Iska прав. Можно перебирать от 1 до FF. 10(10) = 0A(16).
gora, поставил эксперимент. Новые файлы не подхватываются (ставил паузу в цикле, а потом создал пару файлов - до и после алфавита). Среда внутри скобок выполняется единоразово в новом дочернем потоке cmd /c. Вариант через недокументированный код возврата (минус: будет работать совсем не быстро). Да и решил использовать Dir. Код:
@echo off Xeruvim4ik, и во что переименовывать файл под номером 256? В 16-ричную математику он не влезает в 2 разряда. Уточните примерное кол-во файлов. Это критично. |
gora, я это пробовал. В зависимости от условий, получаем либо пропуск в нумерации, либо отлуп вида «файл существует» при переименовании.
|
Итак, Xeruvim4ik хочет иметь файлы вида Name_nn.txt. Если nn -десятичное - это не более 99 файлов, шестнадцатиричное - не более ff (=255) файлов. Можно изобрести, допустим, тридцатьшестьричную :) систему, где в каждом разряде будут символы из набора 0123456789abcdefghijklmnopqrstuvwxyz, но при этом всё равно число файлов не очень большое =1295 (если не просчитался). Вот решение для такой системы
Код:
@Echo Off Цитата:
Спасибо Gora, похоже, не всё так просто в одной директории, как мне хотелось. Поэтому в этом решении исходные перемещаю сначала в файлы, где к расширению добавляю время запуска батника (время должно быть в формате чч:мм:сс,дд с любыми разделителями), а затем переименовываю в txt Кстати, если написать Set /A Razrad=16, получим классическую шестнадцатиричную нумерацию от 01 до FF |
megaloman, вы гений, это то, что нужно, я бы до такого никогда не додумался
|
Время: 23:43. |
Время: 23:43.
© OSzone.net 2001-