中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 18:08
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 菜单选择功能
可打印版本  834 / 5
第1楼 DOSLER 发表于 2008-03-09 20:30
新手上路 发帖 6 积分 18
菜单选择功能
DOS功能调用31H或4C所提供的一字节的返回码,通过批处理子命令IF和ERRORLEVEL对返回码进行处理,可达到自动执行一批命令的目的。在批处理文件中实现所有高级语言的菜单提示功能,使批处理文件变得更加灵活方便。先用DEBUG建立一个菜单驱动程序MENU.COM,对应地编写一个批处理文件lg.bat。具体内容和方法如下:
DEBUG
-166C:0100 MOV DX,111
-166C:0103 MOV AH,09
-166C:0105 INT 21
-166C:0107 MOV AH,01
-166C:0109 INT 21
-166C:010B MOV AH,4C
-166C:010D INT 21
-166C:010F INT 20
-166C:0111 DB '***********************'0D 0A
-166C:0131 DB '*1.Turbo Pascal 5.00*'0D 0A
-166C:0151 DB '*2.Turbo Basic 1.00*'0D 0A
-166C:0171 DB '*3.Turbo Prolog 2.00*'0D 0A
-166C:01B1 DB '*3.Turbo C 2.00*'0D 0A
-166C:01B1 DB '*4.Exit*'0D 0A
-166C:01F1 DB '***********************'0D 0A
-166C:01F1 DB 'Your choicce(0..4):'24 0D 0A 1A
-166C:0209
-RCX
CX0000
:108
-N MENU.COM
-W
Writing 0108 bytes
-Q



再建立一个批处理文件,调用菜单驱动程序,根据返回的字节码作出相应的处理。
@ECHO OFF
START
CLS
MENU
IF ERRORLEVEL 52 GOTO C
IF ERRORLEVEL 51 GOTO PRO
IF ERRORLEVEL 50 GOTO BAS
IF ERRORLEVEL 49 GOTO PAS
IF ERRORLEVEL 48 GOTO EX
CLS
GOTO START

:PAS
TURBO.EXE
GOTO START

:BAS
BASIC.EXE
GOTO START

:PRO
PROLOG.EXE
GOTO START

:C
TC.EXE
GOTO START

:EX
@ECHO ON
执行LG,屏幕左上角先出现一个菜单,并提示用户输入选择,当选择的功能执行结束,重新返回主菜单请求选择,直到选择“0”号功能,程序结束返回DOS。
第2楼 zaa 发表于 2008-03-10 10:20
新手上路 发帖 5 积分 14
请问 debug 我在 xp 下执行 debug 后,
照着您上面的输入 但是会发生 error ???
可否简单说明怎么建立 debug 文件,谢谢喔~~
第3楼 zh159 发表于 2008-03-10 11:03
金牌会员 发帖 1,467 积分 3,687
每做一个菜单就得做一个MENU.COM,还不如用choice来得方便菜单,可以直接在BAT内做菜单
第4楼 qzwqzw 发表于 2008-03-10 11:28
银牌会员 发帖 636 积分 2,343
不知道楼主从那本历史书上择出来的
cmd下实现选择有set/p
dos下实现选择有choice

或许有个有用的地方
就是在cmd下实现单键选择
不过需要改进一下



将以上代码保存为ch.scr
再使用debug < ch.scr 编译得到 ch.com

ch.com将菜单文字的输出交由echo完成
只负责将输入键的ASCII码转换为对应的errorlevel
这样不仅节省了代码
也省得每次输出新菜单都需要重新汇编

比如以下的例子



当然,即使如此
03的choice.exe仍然比这个要好得多

[ Last edited by qzwqzw on 2008-3-10 at 11:50 AM ]
第5楼 plp626 发表于 2008-03-10 13:39
银牌会员 发帖 1,020 积分 2,278
哈,来个鼠标点击的菜单选项功能呀
第6楼 qzwqzw 发表于 2008-03-11 09:41
银牌会员 发帖 636 积分 2,343
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023