Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Цитата amel27:
к слову, пример неудачной жертвы в угоду "универсальности"... просто интересно, где может быть полезна восьмеричная запись? »
уж не знаю, но что сделано - то сделано.
парочка моментов на тему автопреобразования типа данных:
1: намучался, пока отлаживал скрипт "напоминалки" - взбрело же в голову сделать фичу - если число задержки начинается с нуля - то это секунды, а иначе - минуты (ну когда 2 минуты - мало, а 3 - много )
если интересно вот он:
читать дальше »
Код: Выделить весь код
@Echo off
setlocal EnableExtensions
rem Запуск: TimerMsg [таймер] [Сообщение] * Сообщение не может начинаться с цифр, иначе будет воспринято как таймер

rem Кол-во сигналов (от 0)
set Beep=3
rem Таймер в минутах или в секундах по-дефолту, если цифра начинается с "0", например 030 - 30 секунд, 30 - 30 минут.
set Delay=5
rem Отображаемое сообщение по-дефолту
set Msg=Hurry Up!!!

set self="%~0"

if "%1"=="~" set Delay=%2 & set Msg=%~3 & goto L03

:L01
if "%1"=="" goto L02
set N=%1
if %N:~0,1%==0 set N=%N:~1%
set /a N+=0
if /i %N% gtr 0 (set Delay=%1) else set Msg=%~1
shift&goto L01

:L02
if /i %Delay:~0,1% gtr 0 (set /a Delay*=60) else set Delay=%Delay:~1%
if /i %Delay% GEQ 86400 (echo Нельзя указывать таймер более суток! &exit 1)

:L03
if /i %Delay% lss 60 (
ping 127.0.0.1 -n %Delay% 2>nul >nul 
msg * /time:0 %Msg%
for /l %%n in (1,1,%Beep%) do echo  &ping 127.0.0.1 -n 1 2>nul >nul 
exit
)
set /a S=%Time:~0,2% * 3600 + %Time:~3,2% * 60 + %Time:~6,2% + %Delay%
if /i %S% GEQ 86400 set /a S-=86400
set /a H=%S%/3600
set /a M=(%S%-%H%*3600)/60
set /a S=%S%-%H%*3600-%M%*60
at %H%:%M% %ComSpec% /c start "" /low /min %self% ~ %S% "%Msg%"

2: Обход преобразования из восмеричной системы я сделал так (я использовал по 9 цифр для сложения) поскольку из 10го разряда мне главное не вылезти за цифру 1 (остальные 9 разрядов могут содержать любые цифры) и использовал его как раз для "переноса", то младшая часть получалась просто: set /a Low=1%Src:~-9%-1000000000 - использовал так нелюбимое мной автопреобразование типа

А вот обработать лидирующий минус - не догадался, в результате было только сложение (ну оно мне и было нужно в конкретной задаче).

-------
Как сказало Дерево Дровосеку: "я - пень".

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 09-11-2010 | #7