NvvLazyTiger

Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ну, например так: Код: set i_month= set jTmp0=%1 :: если параметра нет, - значит нет if NOT defined jTmp0 goto IfAllOk :: если это 0, - тоже нет if %jTmp0% == 0 goto IfAllOk :: если в параметре больше двух символов - и это не то if NOT %jTmp0:~2%. == . goto IfAllOk :: убираем лидирующий 0 из входного параметра (если есть) if %jTmp0:~0,1% == 0 set jTmp0=%jTmp0:~1% :: результат последовательно сравниваем с числами в интевале 1..12 for /l %%a in (1,1,12) do if NOT defined i_month call :Chkparam %%a :: и идём докладать... goto IfAllOk :ChkParam проверка - это наше число? if NOT %1 == %jTmp0% goto :eof :: да, принимаем... set i_month=%1 :: если это один символ - приписываем слева цифру "0" if %i_month:~1%. == . set i_month=0%1 goto :eof :IfAllOk if defined i_month (echo Ok, i_month=%i_month%) else (echo ! NO or BAD param [%%1=%1]) pause | NB. Защититься от "чего попало" в параметрах вызова CMD - дело весьма хлопотное, если вообще... А вот от обычных очепяток&Co - вполне... UpDate Упс... просмотрел неточность, исправлено. | Всего записей: 262 | Зарегистр. 14-02-2009 | Отправлено: 16:24 06-03-2009 | Исправлено: NvvLazyTiger, 16:34 06-03-2009 |
|