BBS建站上网365问/269.如何设置批处理文件?
Mailer在多数情况下将从DOS批处理文件运行。当它终止时,将返回特定错误代码让你可以在批处理文件中“捕捉”。下面是内部使用的错误代码:
1 内部错误。
2 外部错误 - 丢失文件、路径等。
3 没有足够可用磁盘空间(小于32KB)。
4 (保留)
5 不能初始化调制解调器。
6 不正确FOSSIL版本。
7 没有装载或检测到FOSSIL。
8 FrontDoor已经装载,执行EXIT返回。
9 (保留)
10 用户中断。
11-30 (保留)
31-255 用户可定义错误代码。
如果你从DOS通过运行FD/TERM来启动Terminal,它将总是以错误代码10(用户中断)终止。
各种错误代码可以组织到4个基本分类中:
* 当接收到邮件时,可以选择退出到批处理文件来运行邮件处理工具,例如Gecho等。
* 当你从Mailer的主菜单按<Alt-Q>时或当错误发生时。
* 如果你在Mailer下运行BBS,必须以指示呼叫波特率的错误代码退出。当Mailer退出到批处理文件时,线路仍然是活动的,装载BBS软件,呼叫者将可以进入到BBS。
* 在FDSETUP的事件管理器中定义的错误代码。
当Mailer检测到交互呼叫时,有两种方法启动BBS软件。第一种对各种波特率使用不同批处理标签,第二种对各种波特率使用相同标签。第二种方法依赖于在FDSETUP中的“创建批处理文件(Create .BAT file)”选项。下面分别举两个例子说明。
(1) 不同标签的例子如下:
@echo off
rem --- 每次BBS呼叫结束后到这里。
:loop
C:
CD \BBS\FD
FD
rem --- 检查Mailer返回的错误代码。
If errorlevel 200 goto b9600
if errorlevel 199 goto b2400
if errorlevel 198 goto b1200
if errorlevel 197 goto b300
if errorlevel 100 goto mailIN
if errorlevel 10 goto userBRK
if errorlevel 1 goto Fderror
:mailIN
rem --- 处理可能的交换邮件等。
Cd \bbs\gecho
gecho toss
mbutil link
goto loop
:b9600
以9600 bps拨入呼叫装载BBS软件。
Goto loop
:b2400
以2400 bps拨入呼叫装载BBS软件。
Goto loop
..
..
:userBRK
cls
@echo 用户中断。
Goto done
:Fderror
@echo Mailer返回1到9的错误代码。
:done
(2) 相同标签的例子如下:
@echo off
rem --- 每次BBS呼叫结束后到这里。
:loop
C:
CD \BBS\FD
FD
rem --- 检查被Mailer返回的错误代码。
If errorlevel 200 goto bbsCALL
if errorlevel 199 goto bbsCALL
if errorlevel 198 goto bbsCALL
if errorlevel 197 goto bbsCALL
if errorlevel 100 goto mailIN
if errorlevel 10 goto userBRK
if errorlevel 1 goto Fderror
:mailIN
rem --- 处理可能的交换邮件等。
Cd \bbs\gecho
gecho toss
mbutil link
goto loop
:bbsCALL
rem --- 如果允许“Create .BAT file”选项,
rem 装载被Mailer创建的DOBBS.BAT。
Dobbs
:userBRK
cls
@echo 用户中断。
Goto done
:Fderror
@echo Mailer返回从1到9的错误代码。
:done
当你允许“创建批处理文件Create .BAT file”选项时,Mailer创建的批处理文件为DOBBS.BAT。它包含呼叫拨入的速度、COM端口、到下一次事件剩余的分钟数和可能的ARQ、MNP等字符串。
对带ARQ的16800 BPS、到下一次禁止用户事件有30分钟剩余、在COM端口1以及没有DFRS的拨入呼叫,DOBBS.BAT文件将包含:“exebbs 16800 1 30 0 /ARQ N/A”。
对在2400 BPS、到下一次禁止用户事件有2小时剩余、在COM端口1的拨入呼叫,DOBBS.BAT文件将包含:“exebbs 2400 1 120 0 /NONE N/A”。
在剩余时间和可能的扩展调制解调器结果代码信息(例如/ARQ、/MNP等)之间的参数是任务号,对共享版本总是零。如果调制解调器不发送任何扩展结果代码信息(除了一个“CONNECT nnnn”以外),Mailer将插入/NONE。
EXEBBS.BAT是你必须创建的文件。它将处理你正运行的BBS软件要求的事情,包含在用户已经退出后输出邮件等。EXEBBS.BAT文件的最后语句应该是主批处理文件。这是EXEBBS.BAT文件的例子:
coolBBS -b%1%5 -p%2 -t%3
if errorlevel 200 goto newmail
if errorlevel 40 goto fatal
run
:newmail
cls
@echo 用户输入了交换邮件,现在发送!
Cd \bbs\gecho
gecho scan
run
:fatal
cls
@echo 在coolBBS发生致命错误。
因为DOBBS.BAT带各种信息呼叫EXEBBS.BAT,所以它可以用于传递参数到BBS软件。上面EXEBBS.BAT文件的结果将扩展为:“coolBBS -b9600/ARQ -p1 -t120”。
这表示BBS呼叫以9600拨入,端口为1,到下一次禁止用户事件剩余分钟数为120以及可选(%5)字符串包含/ARQ。
RUN表示再次启动Mailer的主批处理文件。当BBS软件终止时,EXEBBS.BAT将捕捉2个错误代码并然后再次启动RUN.BAT。
上面的讲解可能对初学者来说,还不容易马上理解,下面说明批处理文件流程,这是在RUN、DOBBS和EXEBBS之间的实际文件流向:
┌→ RUN.BAT 装载Mailer并执行所有交换邮件和错误处理。
│ │ 当检测到呼叫BBS时,它装载Mailer创建的DOBBS.BAT。
│ │
↑ ↓
│ │
│ │
│ DOBBS.BAT 被Mailer创建。DOBBS调用EXEBBS.BAT,
│ │ 带有与拨入呼叫有关的参数。
│ │
↑ ↓
│ │
│ │
│ EXEBBS.BAT 带上面描述的参数被DOBBS.BAT调用。
│ │ 装载BBS软件,处理新创建的邮件(如果有的话),
│ │ 并最终返回到RUN.BAT。
↑ ↓
│ │
└─←─┘
当Mailer检测到有人呼叫BBS时,创建的DOBBS.BAT中包含EXEBBS.BAT。如果检测到传真拨入时,创建的DOBBS.BAT中包含的不是EXEBBS.BAT而是EXEFAX.BAT。参数也稍微不同:“exefax nnnnn 1 0 0 /NONE N/A”。
从左到右是波特率,COM端口(1),物理端口(0),任务号{C} 或对共享版本为0,跟着CONNECT FAX到第一个<CR>的数据,以及DFRS信息。