BBS建站上网365问/193.如何设置批处理文件?
RemoteAccess应该在批处理文件中运行,以便每个呼叫者断线后可以循环等待。当RemoteAccess终止时,传递一个错误代码回到批处理文件,批处理文件应该捕捉这个错误代码并相应动作。错误代码可以从1到255,1到5是保留的。
下面举出三个例子说明如何设置批处理文件:
(1) 单线站台
下面是单线不转信站台的例子。文件名为RUNRA.BAT,后面可以接受线号为参数,例如运行一线时命令行为“RUNRA 1”。
@echo off
REM 设置环境变量。
SET RA=\BBS\RA
:Start
REM 开始批处理文件主循环。
Cls
Echo 开始RemoteAccess线号 %1
CD \BBS\RA\NODE%1
\BBS\RA\RA -E10 -N%1
REM RA 退出以后,捕捉这个错误代码。
:AfterRA
IF ERRORLEVEL 20 GOTO Maintain
IF ERRORLEVEL 10 GOTO Start
IF ERRORLEVEL 2 GOTO Local
IF ERRORLEVEL 0 GOTO Quit
:Maintain
REM 因为这是单线站台,所以可以直接做维护任务。
CD \BBS\RA
REM 打包用户数据库,删除60天没有呼叫的用户,并进行排序。
RAUSER -S -P -D60
REM 打包信件数据库,按RACONFIG中的设置删除信件,
REM 重新编号,更新回复链以及用户上次阅读指针。
RAMSG PACK -Purge -Renumber
REM 结束维护任务,循环批处理文件。
GOTO Start
:Local
REM 本地登录模式。
CD \BBS\RA\NODE%1
\BBS\RA\RA -E10 -L -N%1
REM 结束时跳到AfterRA来捕捉返回的错误代码。
GOTO AfterRA
:Quit
REM 退出批处理文件。
(2) 多线站台
多线站台的批处理文件复杂一些。下面是不转信多线站台的批处理文件例子。文件名为RUNRA.BAT,后面可以接受线号为参数。运行命令行为“RUNRA <线号>”。
@echo off
REM 设置环境变量。
SET RA=\BBS\RA
:Start
REM 开始批处理文件主循环。
Cls
Echo 开始RemoteAccess线号%1
CD \BBS\RA\NODE%1
\BBS\RA\RA -E10 -N%1
REM RA退出以后,捕捉错误代码。
:AfterRA
IF ERRORLEVEL 20 GOTO Maintain
IF ERRORLEVEL 10 GOTO Start
IF ERRORLEVEL 2 GOTO Local
IF ERRORLEVEL 0 GOTO Quit
:Maintain
REM 因为这是多线站台,所以应该只让一条线执行维护任务,避免冲突。
REM 二线进入事件后暂停,等待一线完成维护,然后继续。
CD \BBS\RA
REM 当一线做维护任务时,如果不是一线,则跳到等待(wait)。
IF NOT %1 == 1 GOTO Wait
REM 创建一个叫RAWAIT.SEM的标志文件。
ECHO … >RAWAIT.SEM
REM 打包用户数据库,删除60天没有呼叫的用户,并进行排序。
RAUSER -S -P -D60
REM 打包信件数据库,按RACONFIG中的设置删除信件,
REM 重新编号,更新回复链以及用户上次阅读指针。
RAMSG PACK -Purge -Renumber
REM 结束维护任务,删除标志文件,然后循环批处理文件。
ERASE RAWAIT.SEM
GOTO Start
:Local
REM 本地登录模式
CD \BBS\RA\NODE%1
\BBS\RA\RA -E10 -L -N%1
REM 结束时跳到AfterRA来捕捉返回的错误代码。
GOTO AfterRA
:Wait
REM 在这里等待,直到文件RAWAIT.SEM不再存在。
IF EXIST RAWAIT.SEM GOTO Wait
REM 如果它不存在则循环。
Goto Start
:Quit
REM 退出批处理文件。
(3) 转信的多线站台(用shell到邮递器模式运行)
转信的多线站台批处理文件更复杂一些。可以使用两种模式运行站台,这里的例子是用shell到邮递器模式。例子中的邮递器为FrontDoor。
文件名为RUNRA.BAT,后面可以接受线号为参数。运行的命令行为:“RUNRA <线号>”。
@echo off
REM 设置环境变量。
SET RA=\BBS\RA
SET FD=\BBS\FD
:Start
REM 开始批处理文件主循环。
Cls
Echo 开始RemoteAccess并shell到邮递器
CD \BBS\RA\NODE%1
\BBS\RA\RA -M\BBS\FD\FD.EXE*M -E10 -N%1
REM RA退出后,捕捉这个错误代码。
:AfterRA
IF ERRORLEVEL 20 GOTO Maintain
IF ERRORLEVEL 10 GOTO Start
IF ERRORLEVEL 2 GOTO Local
IF ERRORLEVEL 0 GOTO Quit
:Maintain
REM 因为这是多线站台,所以应该只让一条线执行维护任务,避免冲突。
REM 二线进入事件后暂停,等待一线完成维护,然后继续。
CD \BBS\RA
REM 当一线做维护任务时,如果不是一线,则跳到等待(wait)。
IF NOT %1 == 1 GOTO Wait
REM 创建一个叫RAWAIT.SEM的标志文件。
ECHO … >RAWAIT.SEM
REM 打包用户数据库,删除60天没有呼叫的用户,并进行排序。
RAUSER -S -P -D60
REM 打包信件数据库,按RACONFIG中的设置删除信件,
REM 重新编号,更新回复链以及用户上次阅读指针。
RAMSG PACK -Purge -Renumber
REM 结束维护任务,删除标志文件,然后循环批处理文件。
ERASE RAWAIT.SEM
GOTO Start
:Local
REM 本地登录模式
CD \BBS\RA\NODE%1
\BBS\RA\RA -E10 -L -N%1
REM 结束时跳到AfterRA来捕捉返回的错误代码。
GOTO AfterRA
:Wait
REM 在这里等待直到文件RAWAIT.SEM不再存在。
IF EXIST RAWAIT.SEM GOTO Wait
REM 如果它不存在则循环。
Goto Start
:Quit
REM 退出批处理文件。