res2001
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору severee Вот такой батник: Код: @echo off ::Присваивает переменной %NUM0% следующий порядковый номер. Последний использованный номер сохраняется в файле. ::Параметры: ::%1 - имя текстового файла, в котором сохранять номер для истории. Файл может не существовать. ::%2 - количество символов в возвращаемом номере (номер дополняется слева нужным количеством нулей) ::[%3] - диапазон уникальности номера. %3 = d|m|y, соответственно день, месяц, год. По окончании указанного диапазона нумерация начинается заново. По умолчанию %3=d. ::Используются переменные %YEAR%, %MONTH%, %DAY%, которые должны быть предварительно установлены. set "b=0" & set "l=10" if defined winxp (set "yearb=0" & set "yearl=4") else (set "yearb=2" & set "yearl=2") call set "dd=%DAY%.%MONTH%.%%YEAR:~%yearb%,%yearl%%%" if /i "%3" equ "y" (set "b=6" & set "l=4" & call set "dd=%%YEAR:~%yearb%,%yearl%%%") if /i "%3" equ "m" (set "b=3" & set "l=7" & call set "dd=%MONTH%.%%YEAR:~%yearb%,%yearl%%%") if not defined winxp set /a "l-=2" set "num=0" set "data1=%~t1" call set "data1=%%data1:~%b%,%l%%%" if "%data1%" equ "%dd%" if exist "%~1" set /p num=<"%~1" set /a "num+=1" set "NUM0=0000000000000000000%num%" call set "NUM0=%%NUM0:~-%2%% >"%~1" echo.%num% exit /b | В нем используются переменные YEAR, MONTH,DAY, ну понятно, что они содержат их надо установить или в вызывающем скрипте или прям тут. Так же еще задействована переменная winxp - она устанавливается, если операционка ВинХП и выше, если Вин2000 - переменной нет. Заточен на формат даты DD.MM.YYYY Выглядит страшненько из-за того, что мне нужно было, чтоб он работал и в Вин2000 и в ВинХП, а в 2000 немного другой вывод даты. Если у тебя одна операционка можно прилично сократить. Добавлено: vitrzn Цитата: Chcp 1251 set /p str=<k:\RECEIVE\LAST_REC.TXT msg * %str% cls | | Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:08 19-12-2011 | Исправлено: res2001, 09:21 19-12-2011 |
|