第五章 建立良好的用户工作环境 (注册底稿与菜单设计) 【计划课时】授课4课时+实验4课时 (要求预习教材P190-200) 网络对许多用户犹如一个巨大的迷宫。编写注册底稿和菜单设计的目的就是为用户建立一个良好的工作环境——换言之,将一个也许对网络结构一无所知的用户自动带入合适的“工作岗位”,使他一入网就可以像在单机上完成各种工作,而不需要花费时间去学习网络使用知识或了解网络本身的结构。 一、注册底稿 1.三类注册底稿 教材P191 注册底稿(英文是“login script”,中译名还有“入网底稿”、“注册簿记”、“登录原稿”等)类似于DOS中的自动批处理文件,用来设定用户入网时自动执行哪些操作。自动批处理文件中的各条命令在用户启动时自动执行,注册底稿中的各条命令则在用户注册入网时自动执行。 注册底稿分为三类:系统注册底稿、用户注册底稿、缺省注册底稿。其中需要规划的是前面两种。 系统注册底稿由超级用户及其等效者编写,它的执行将对所有用户发生作用。 用户注册底稿只为该用户本身发生作用。 一般来说,系统注册底稿用于为所有用户设定一个基本环境,而用户注册底稿是根据特定用户的情况对前者所设基本环境进行补充或修正。如有相同作用的命令,最后起作用的应是后者中的命令。 【比较】 DOS启动过程 NetWare用户入网过程 Y Y N N Y 启动成功 N 注册入网成功 DOS的自动批处理文件(文件名为AUTOEXEC.BAT)必须存放在启动盘根目录下。 系统注册底稿(文件名为NET$LOG.DAT)必须存放在SYS:PUBLIC下(隐含文件)。 用户注册底稿(文件名为LOGIN)必须存放在SYS:MAIL中的各自ID目录下。 缺省注册底稿则包含在用户入网注册程序LOGIN.EXE中。它只能被执行,不能被修改。 【注意】系统注册底稿和用户注册底稿即使由一个空格组成,也不会再执行缺省注册底稿。 2.编写注册底稿的方法 教材P193 系统注册底稿:SYSCON → Supervisor Options → System Login Script 用户注册底稿:SYSCON → User Information → 选用户名后回车→ Login Script 系统/用户注册底稿都是文本文件,所以也可直接用EDIT等进行编写或修改。 3.注册底稿命令及语法规则 教材P193-197 语法规则:每个语句一行,每行不超过150个字符。 ⑴ MAP 建立映射 除上章介绍外,还有 MAP *1:=SYS:HOME 自动用第一个可用盘符字母映射 MAP *2:=SYS:HOME/%LOGIN_NAME 自动用第二个可用盘符字母映射 MAP DISPLAY ON 入网时显示映射关系(默认) MAP DISPLAY OFF 入网时不显示映射关系 MAP ERROR ON 入网时显示映射时相关的出错信息(默认) MAP ERROR OFF 入网时不显示映射时相关的出错信息 MAP DISPLAY OFF 入网时不显示映射关系 ⑵ WRITE 显示提示文件(相当于FoxBASE+中的?/??) 教材P195 · 显示字符串必须用双引号括起来; · 同一语句中如有多条内容,应用“;”分隔; · 可以使用“标识变量” (共26个,见P194表8-2)来获得特殊显示内容; 所谓“标识变量”,由特定单词组成,服务器自动“知道”该变量的值 · 标识变量放在字符串中时,前面应加上“%”,且必须大写。 【例一】以下几条命令显示结果相同—— WRITE “Good %GREETING_TIME,%LOGIN_NAME!” WRITE “Good %GREETING_TIME,”;LOGIN_NAME;”!” WRITE “Good”;GREETING_TIME; “,”;login_name; “!” 显示结果: morning, Good afternoon, userXX Evening, 【例二】WRITE “莆高专%FILE_SERVER号服务器开始为您服务!” 显示结果: 莆高专XHDX01号服务器开始为您服务! 变量:GREEING_TIME 变量值为:morning,afternoon,evening LOGIN_NAME 变量值为:注册用户名 FILE_SERVER 变量值为:文件服务器名 说明:标识变量用于MAP命令中,必须加前缀%; 标识变量用于WRITE命令且处于双引号中,必须加前缀%且大写。 特殊效果: \r 回车 \n另起一行 \7 一个 beep声 如:WTITE “\7\n\n\n\n今天是%YEAR年%MONTH%月%DAY日\n\n\n” 结果:响一声,空四行,显示今天是“……”,又空三行 ⑶ DISPLAY 显示文本文件内容 教材P195 FDISPLAY 显示文本文件内容(能过滤控制字符,仅显示文本信息) 注册底稿命令行每行必须少于150个字符,且修改不便(必须存放在固定目录下,且必须有修改权)。为此,可将入网时须显示的信息作成一个文本文件,用本命令显示。 如: DISPLAY \HOME\USER01\入网须知.TXT 注意:文本文件中不能使用标识变量。 【例】 IF MONTH=“10” AND DAY=“1” THEN BEGIN FIRE PHASERS 5 TIMES DISPLAY \HOME\QZ.TXT PAUSE END 文本文件QZ.TXT内容如下: ★★ ⑷ FIRE PHASERS n TIMES 产生n响(以引起用户注意) ⑸ PAUSE 暂停执行(按任意键继续) ⑹ IF … THEN … [ELSE] … 选择执行 教材P196 【例】 IF MONTH=“1” AND DAY=“1” THEN WRITE “新年好!” ELSE WRITE “欢迎光临莆高专学生机房!” 如果THEN后(即条件为真)的语句不止一条,必须使用BEGIN……END(见前页例)。 【例】IF MEMBER OF “TEACHERS” THEN WRITE “Good %GREETING_NAME, Teacher!” ELSE DISPLAY \HOME\USER01\入网须知.TXT MEMBER OF “用户组名” ——如果为该组成员,变量值为真。 类似, IF NOT MEMBER OF “……”THEN 特殊用法:可用%0,%1,%2-%9代替LOGIN命令后的参数 LOGIN XHDX01/USER01 98JY01 %0 %1 %2-%9(通常代表自设密码) 【例】IF HOUR24> “07” AND MINUTE> “40” AND THEN WRITE “现在时间是:%HOUR24时%MINUTE分%SECOND。你迟到了!” IF “%1”= “SUPERVISOR” THEN MAP *1:=SYS:SYSTEM ⑺ # 执行外部命令(EXE和COM) 教材P196 用于执行DOS外部命令和注册底稿中不允许直接使用的NetWare公用命令。 执行完毕返回注册底稿继续执行后续语句。 【例】在注册底稿中调用UCDOS汉字显示功能。 #RD16 #KNL 对于DOS内部命令或批处理文件,应用以下形式调用: #COMMAND /C [内部命令名或批处理文件名] 注意:COMMAND之后至少应跟一个空格! 【例】 #COMMAND /C LIMD WB #COMMAND /C UCDOS.BAT ⑻ EXIT 停止注册底稿的执行 教材P197 本命令执行后将结束注册底稿执行过程。 特殊用法: EXIT “可执行文件名” 中止注册底稿执行,转去执行指定的COM、EXE或BAT文件。 ⑼ DRIVE 盘符 切换到指定驱动器 如: DRIVE C: ⑽ REMARK 文字内容 ; 文字内容 注释语句(不执行) * 文字内容 ⑾ COMSPEC = …… 指定DOS的COMMAND.COM所在目录。 教材P197 (软盘启动/无盘工作站启动多有这一条) 【例】 COMSPEC = SYS:PUBLIC/DOS/V6.22/COMMAND.COM ⑿ INCLUDE “副注册底稿文件名” 教材P196 执行另一个“副注册底稿”(用于注册底稿行数太多时——相当于调用子程序) 如 IF MEMBER OF “student” THEN BEGIN …… (几十条语句) END 可改写为 IF MEMBER OF “student” THEN BEGIN INCLUDE “SYS:HOME\USER01\A.LOG” END 本命令甚至实现可以不必使用超级用户权限就可以编写系统注册底稿。 4.注册底稿示例 【例】我校学生机房系统注册底稿 MAP DISPLAY OFF MAP S1:=SYS:PUBLIC MAP S2:=S1:DOS/V6.22 MAP S3:=SYS:UCDOS …… COMSPEC=S2:COMMAND.COM MAP DISPLAY ON WRITE “\7” 【例】缺省注册底稿 教材P191 WRITE “Good %GREETING_TIME,%LOGIN_NAME.” MAP DISPLAY OFF MAP ERRORE OFF MAP *1:=SYS: ; *1=SYS:%LOGIN_NAME IF “%1”=”SUPERVISOR” THEN MAP *1:=SYS:SYSTEM MAP INS S1:=SYS:PUBLIC MAP INS S2:=S1:%MACHINE/%OS/%OS_VERSION MAP DISPLAY ON 二、用户菜单设计 1.步骤 a.编辑用户菜单(文本文件,默认扩展名为MNU) 用EDIT等进行编写。 b.执行用户菜单文件 F>MENU [路径]菜单文件名 (.MNU可省略) 2.菜单格式与常用符号 【例】欲完成以下菜单设计,请编写菜单文件。 EDIT TEST.MNU %主菜单,0,0,4 网络实用软件 %网络实用软件 执行DOS命令 %执行DOS命令 应用程序 %应用程序 退出网络 !LOGOUT %网络实用软件,20,10,5 FILER FILER SYSCON SYSCON %执行DOS命令 文件改名 REN @ “原文件名:” @ “新文件名:” 列文件目录清单 DIR @ “请输入路径:” PAUSE %应用程序 WINDOWS UCDOS.BAT AUTOCAD ACAD10.BAT ①格式说明 %菜单名,n1,n2,n3 菜单标题(顶格) 菜单项名1 菜单项(顶格) %下级菜单名 调用的子菜单(%+缩进) 菜单项名2 菜单项(顶格) 命令组 调用的命令(缩进) 注意批处理文件一项只能调用一个 …… 注:n1—垂直坐标(1-24) n2—水平坐标(1-80) n3—调色板号 n1,n2缺省时为0,0(屏幕正中) n3缺省时为蓝底白字 ②功能符号 %——顶格时表示菜单段从此开始(“%”后为菜单标题) 缩进时表示调用子菜单(“%”后为所调用的子菜单名) @——提示用户输入数据 (@ “提示语”) !——退出菜单程序,并释放占用的内存 \——在文本文件中指示特殊字符(如@、%、! 等) #——关掉屏幕上显示的字符 【注】每个菜单项前如加上数码1、2、3……则按数码从小到大顺序排列,否则按菜单项字母顺序排列; 按ESC可退出当前菜单 3.菜单调色板的设置 缺省调色板为0~4号。 Defined Palettes   Color Palette 0 Color Palette 1 Color Palette 2 Color Palette 3 Color Palette 4 蓝底白字 蓝底绿字 黑底绿字 黑底红字 灰底白字   4.转换为V3.12菜单 以上介绍的是NetWare V3.11中菜单文件的编写,该文件可直接在V3.12中运行。 NetWare V3.12提供了一套新的菜单系统,其菜单文件(扩展名为SRC)经过编译,可加快菜单运行速度,而且功能更强,占用内存更少,但编写麻烦一些。 将V3.11的菜单文件转换为V3.12的菜单文件,步骤如下: F>MENUCNVT A.MNU (将A.MNU转换为V3.12 形式的菜单文件A.SRC) F>MENUMAKE A.SRC (将A.SRC编译成A.DAT) F>NMENU A.DAT (执行菜单程序) 【注意】V3.11菜单中各菜单项前序号1、2、3等应去掉,因为转换时会自动生成新的序号)。 5.在DOS单机中使用NetWare菜单 将以下文件考贝到DOS单机上,就可在DOS单机上使用NetWare菜单功能。 SYS$MSG.DAT SYS$ERR.DAT SYS$HLP.DAT IBM$RUN.OVL MENUPARZ.HLP MENU.EXE MENUPARZ.EXE 其中IBM$RUN.OVL考贝后必须更名为$RUN.OVL。 作业题 注册底稿的标识变量在MAP和WRITE语句中使用时,应注意什么事项? 注册底稿有哪几种?其文件名是什么?分别存放在文件服务器的哪个目录下? 用户注册底稿与系统注册底稿的命令有冲突时,最后起作用的是否由超级用户编写的系统注册底稿?什么情况下会执行缺省的注册底稿? 编写注册底稿时,WRITE命令与DISPLAY命令用法有何不同? 按下列要求编写注册底稿:将\USER0映射为第一查找驱动器,入网后连响三声,显示“今天是××××年××月××日,莆田高专××××号服务器开始为您服务!”如果今天是星期六或星期日,还会再显示“今天是休息日,您还在加班,精神可嘉,向您致敬!”如果注册的用户名是USER0,请将\USER0\UCDOS映射为虚根驱动器。注册底稿执行结束时,应自动执行批处理文件\USER0\USER.BAT。 (题中“×”处编写时必须使用相应的标识变量) 编写一菜单文件(.MNU),应实现的菜单结构如下: 在主菜单下选B、C、D项时,分别执行Pctools.exe,KV300.exe和logout.exe。