bat-ник для увеличения номера файла
имхо средствами батников это не делается. попробуй яваскрипт.
это делается средствами яваскрипта?
да, в WSH
Имелся ввиду Windows Script Host. Для него можно писать на VBScript и JavaScript.
а... не пугай так:)
спасибо за реплаи
кста, а что, ЯваСкрипт умеет работать с регулярными выражениями (без них тут, вроде, никак)?
посимвольной работы со стрингами здесь хватит за глаза
Имхо делается, надо тока Lynn подождать
Номера идут по порядку? Длина номеров одинакова?
Тогда можно и батником обойтись, имхо. Но если в цифрах нет ведущих нулей, то не получится (не будет правильно работать сортировка).
Идея: получить список файлов (dir /b >>tmpfile дописать в конец имя, которое должно быть у последнего файла (echo .... >>tmpfile отсортировать по убыванию (sort /r).
Затем в цикле читаем этот файл (for /? каждый раз вызываем ren, параллельно сохраняя в переменной окружения имя, т.е. (нужные параметры для for посмотри сам):
for %%I.... do call :mylabel %%I
goto :eof
:mylabel
if -%save%-==-- goto cont
if -%1-==-.- goto :eof
if -%1-==-..- goto :eof
ren %1 %save%
:cont
set save=%1
goto :eof
FOR /L %%i IN (10000,-1,0) DO @2.bat %%i
C:\Projects>more 2.bat
@set /A J=%1+1
move solp%1.dat solp%J%.dat
Можно сразу список файлов в FOR получать, но это надо help for покурить хорошо.
я бы добавил проверку, существует ли файл
А зачем два файла?
А зачем два файла?welcome to *.bat world
welcome to *.bat worldразве под NT между *.bat и *.cmd есть какое-то отличие?
если в реестр залезть и нашкодничать там - будут.
если в реестр залезть и нашкодничать там - будут.Если уж на то пошло, топикстартер не сказал, что у него за ОС, может у него *nix, а слово "батник" он по привычке использует
Мне понравилось
Спасибо за посты, у меня тут у самого кое-какие идеи зашевелились, по моему даже проще можно, учитывая структуру имен (solpN.dat).
Только как сделать строчку 'solpN.dat', N - число, хранящееся в переменной I - вот так:
$filename$ = solp%%I.dat
?
Тебе уже почти рабочий вариант предложил.
Да, я просто проглядел его. Всё работает. Хелп как-нибудь покурю на досуге.
Image$n.tif
при этом $n идет без лидирующих нулей.
1) удаляю Image посредством Multi Rename Tool в TC
2) прогоняю через вот такой скрипт:
for /F "usebackq delims=|" %%j in (`dir /b ?.*`) DO @move %%j 00%%j
for /F "usebackq delims=|" %%k in (`dir /b ?.*`) DO @move %%k 0%%k
Совершенно тупо, но работает
Если TC использовать, то в том же Multi Rename Tool есть [C], который и прибавить единичку может, и лидирующие нули добавит. Правда такое прокатит, если нет пропусков в нумерации.
а если такую штуку надо провернуть в N директориях, то TC не сможет этого сделать. скрипту же пофигу.
а если в одной директории, то умение TC работать с регэкспами не поможет?
есть N папок с файлами Image1.tif ... ImageKKKK.tif
как во всех папках с помощью TC привести файлы к виду ZZZZ.tif, где ZZZZ - порядковый номер внутри папки с лидирующими нулями.
галка "RegEx" не поможет (в одной папке)? Я ей не пользовался - хз, как именно они там реализованы, просто спрашиваю
Зачем тебе регулярные выражения? Тем более они применяются, как не трудно это видеть, в Search & Replace, которые ты не заполнил.
Сможет. Сперва поиск, Feed to listbox, Ctrl+M.
А дальше? список файлов и по ctrl+B получить можно, без всякого поиска.
За Ctrl+B спасибо. Знал, но никогда не вспоминал, когда надо было.
фактически мне надо дописать лидирующие нули и только.
Сортировка по имени. [N1-9]0[N10] и аналогично для 1, 2, 3 ведущих нулей.
Оставить комментарий
boginya
Имеется набор пронумерованных файлов: solp0.dat, solp1.dat, solp2.dat....Нужно написать bat-файл, который бы увеличил номер каждого файла на 1.
Подскажите, как это сделать, пожалуйста