Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной
показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
- __techs (2:5015/42) ----------------------------------------------- __techs - Msg : 20 of 1000 Scn From : Pavel Gulchouck 2:463/68 24 May 96 11:45:00 To : Stas Gridin 26 May 96 07:47:10 Subj : Батнимк нужнo написать ------------------------------------------------------------------------------- @AREA:NICE.SOURCES.D Hi Stas! Sat May 18 1996, Stas Gridin ==> All: SG> Hаpoд не мoгли бы пoмoчь. Hужнo написать батник слoжения 2-х чисел, числа SG> oт 0 дo 10. Числа задаются паpаметpами. Мoжнo пoльзoваться тoлькo SG> кoмандами DOS'а, как внутpеннеми так и внешнеми Hе, ну это ж совсем неспортивно - можно внешние команды, числа до 10... Вот батник, использующий только _внутренние_ команды command.com, и складывающий произвольные (до восьми разрядов) натуральные числа. Только в связи с тем, что он вызывает себя по call %0 нужно либо его вызывать с полным путем, либо чтобы он находился по %PATH%. Да, обработка ошибочных ситуаций (в т.ч. плохих параметров и переполнения environment) не происходит. В этом случае возможно зацикливание. И вообще, я его потестировал совсем немного, поэтому возможны глюки. Умножение пишется аналогично, в столбик. ;-) И вообще, на батниках imho можно реализовать любой алгоритм. В доказательство давно собираюсь tetris написать в ANSI, но все времени нет подобной дурью маяться. ;-) Хотя на языке скрипта telix я tetris видел. === Cut === @echo off if "%1"=="getfig" goto getfig if "%1"=="addzero" goto addzero if exist %temp%\\add\\*. goto badtemp cd %temp% mkdir add cd add call %0 addzero %1 num1 call %0 addzero %2 num2 set sum= set perenos=0 set curfig=0000000 set fzero= :loop if not exist *. goto nodel echo y|del *. > nul :nodel rem выделяем очередные цифры в fig? call %0 getfig %num1% 1 call %0 getfig %num2% 2 rem складываем эти цифры set p2=0 if "%perenos%"=="1" goto peren :addfig if "%fig1%"=="0" goto endafig if "%fig1%"=="1" set fig1=0 if "%fig1%"=="2" set fig1=1 if "%fig1%"=="3" set fig1=2 if "%fig1%"=="4" set fig1=3 if "%fig1%"=="5" set fig1=4 if "%fig1%"=="6" set fig1=5 if "%fig1%"=="7" set fig1=6 if "%fig1%"=="8" set fig1=7 if "%fig1%"=="9" set fig1=8 :peren if "%fig2%"=="9" goto afig9 if "%fig2%"=="8" set fig2=9 if "%fig2%"=="7" set fig2=8 if "%fig2%"=="6" set fig2=7 if "%fig2%"=="5" set fig2=6 if "%fig2%"=="4" set fig2=5 if "%fig2%"=="3" set fig2=4 if "%fig2%"=="2" set fig2=3 if "%fig2%"=="1" set fig2=2 if "%fig2%"=="0" set fig2=1 goto addfig :afig9 set p2=1 set fig2=0 goto addfig :endafig set perenos=%p2% set sum=%fig2%%sum% if "%curfig%"=="" goto putres if "%curfig%"=="0" set curfig= if "%curfig%"=="00" set curfig=0 if "%curfig%"=="000" set curfig=00 if "%curfig%"=="0000" set curfig=000 if "%curfig%"=="00000" set curfig=0000 if "%curfig%"=="000000" set curfig=00000 if "%curfig%"=="0000000" set curfig=000000 set fzero=0%fzero% rem Проверяем, не хватат ли? rem > %fzero%%num1% if not exist 00000000 goto loop del 00000000 > nul rem > %fzero%%num2% if not exist 00000000 goto loop :putres if "%perenos%"=="1" set sum=1%sum% echo y|del *. > nul cd .. rmdir add echo %sum% set fig1= set fig2= set sum= set curfig= set fzero= set perenos= set p2= goto exit :getfig rem > %2 for %%i in (*.) do ren %%i %curfig%? for %%i in (*.) do set fig=%%i echo y|del *. > nul call %0 addzero %fig% fig if "%fig%"=="00000000" set fig%3=0 if "%fig%"=="00000001" set fig%3=1 if "%fig%"=="00000002" set fig%3=2 if "%fig%"=="00000003" set fig%3=3 if "%fig%"=="00000004" set fig%3=4 if "%fig%"=="00000005" set fig%3=5 if "%fig%"=="00000006" set fig%3=6 if "%fig%"=="00000007" set fig%3=7 if "%fig%"=="00000008" set fig%3=8 if "%fig%"=="00000009" set fig%3=9 set fig= goto exit :addzero rem добавляем %2 нулями впереди до восьми и присваеваем результат в %3 set zeroes= :azloop rem > %2%zeroes% if exist %2%zeroes%0 goto eazloop set zeroes=%zeroes%0 goto azloop :eazloop set %3=%zeroes%%2 echo y|del *.>nul goto exit :badtemp echo Hе могу работать, когда в %temp%\\add столько мусора! :exit === Cut === Lucky carrier, Гуля aka gul@lucky.carrier.kiev.ua --- GoldED/2 2.50+ * Origin: Old programmers never die. They branch to a new address. (2:463/68)