|
ql2000
初级用户
积分 211
发帖 23
注册 2004-4-12
状态 离线
|
『楼 主』:
如何在批处理中编写选择菜单?
我见很多批处理都能实现选择菜单,例如:
defrag,mem,end[D,M,E]?
请问这是如何实现的?谢谢!
|
|
2004-4-27 00:00 |
|
|
Kinglion
铂金会员
痴迷DOS者
积分 5792
发帖 1921
注册 2003-6-20 来自 金獅電腦軟體工作室
状态 离线
|
『第
2 楼』:
我以前在工作中使用的一個批處理文件
@ECHO OFF
CLS
SET EC=
GOTO GetDRV
NAME: SETEC.BAT Shareware Version
PURPOSE: Set parameters for "Pharmacopoeia Manage System"
COPY: KingLion SoftWare WarkRoom & Dou Jie Hui
VERSION: 1.01
DATE: 11-06-97
:GetDRV
CLS
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo 圻哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌咣
echo ? Type the letter of the Parameters where you ?
echo ? want to run Program ?
echo ? (C)Copyright Kinglion Software Workroom. ?
echo ? (Usually parameters is E) ?
echo 勰哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪嫩
echo ? ?
echo ? E = 选择西药药品数据库 ?
echo ? ?
echo ? ?
echo ? C = 选择中药药品数据库 ?
echo ? ?
echo 圮苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苒
echo.
echo.
echo.
echo.
echo.
C:\NWDOS\GETKEY e99,E98,c97,C96
CLS
IF ERRORLEVEL 99 GOTO SETE
IF ERRORLEVEL 98 GOTO SETE
IF ERRORLEVEL 97 GOTO SETC
IF ERRORLEVEL 96 GOTO SETC
:SETE
SET EC=E
GOTO QUIT
:SETC
SET EC=C
GOTO QUIT
:QUIT
CLS
相關文件見下面壓縮包:
打开附件
|
熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
|
|
2004-4-27 00:00 |
|
|
龙王
银牌会员
积分 1186
发帖 334
注册 2003-5-30
状态 离线
|
『第
3 楼』:
Quote: | 以下是引用ql2000在2004-4-27 12:44:07的发言:
我见很多批处理都能实现选择菜单,例如:
defrag,mem,end[D,M,E]?
请问这是如何实现的?谢谢!
|
|
@echo off
choice /dme defrag,mem,end
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag
:defrag
defrag
goto end
:mem
mem
goto end
:end
|
|
2004-4-27 00:00 |
|
|
ql2000
初级用户
积分 211
发帖 23
注册 2004-4-12
状态 离线
|
『第
4 楼』:
非常感谢 Kinglion 和龙王。but 龙王里的choice命令好像只有win2003才有,kinglion的我又看不懂,能直接编给我看看吗,谢谢了!
|
|
2004-4-27 00:00 |
|
|
龙王
银牌会员
积分 1186
发帖 334
注册 2003-5-30
状态 离线
|
『第
5 楼』:
Quote: | 以下是引用骨灰龙在2004-2-9 8:57:44的发言:
choice其实是有两个版本。
在win2003server中有一个文件叫choice.exe,而我们所说的choice是DOS下自带的choice.com文件。两个文件的大小差别很大,功能却一样。
choice.exe只能在xp以上的系统中才能使用。 |
|
Quote: | 以下是引用Wengier在2004-2-11 10:33:27的发言:
DOS中自带的CHOICE叫作CHOICE的DOS版本,而WinNT/2K/XP/2003所带的CHOICE叫作CHOICE的Win32版本,它们互相完全不同,只是应用程序在不同操作系统/平台下的移植品罢了,就像同一个程序的Win版本和Linux版本那样。 |
|
|
|
2004-4-28 00:00 |
|
|
ql2000
初级用户
积分 211
发帖 23
注册 2004-4-12
状态 离线
|
『第
6 楼』:
to 龙王:
我在2k和xp都搜索过,没有choice这个命令啊........请告知,谢谢!
顺便问问,听说if命令都能实现,但不知道如何编,哪位知道的请告知,谢谢!
|
|
2004-4-28 00:00 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
7 楼』:
Re ql2000:
2000和XP都不缺省安装 choice.exe 或者 choice.com,这应该是 Wengier 兄的一时之误。
要想实现菜单操作,必须接受键盘输入,所以需要 CHOICE 或者 GETKEY 等类似的程序; IF 命令实现的是键盘输入的判断,以利于跳转执行不同的命令内容;无法单独用它实现菜单操作。
另外,我很少使用QQ或者其它即时通讯软件,主要还是使用电子邮件进行网络交流,邮箱地址可以在本贴内上方的邮箱按钮提示中找到。
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-4-28 00:00 |
|
|
ql2000
初级用户
积分 211
发帖 23
注册 2004-4-12
状态 离线
|
『第
8 楼』:
那通用性不是................如果我将编写好的bat放到其他机上不就运行不了吗?
难道没有其他办法了么?唉...........
|
|
2004-4-30 00:00 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
9 楼』:
Re ql2000:
楼主能够考虑到通用性,看来是一个考虑比较全面的人。
一般意义上说,我们遇到通用性(也可以称之为可移植性或者兼容性)的问题时,有两类解决办法,它们分别面向两个方向:
一类是面向系统平台的,那就是扩展平台的功能供给。比如此例,我们需要批处理中的菜单功能在没有CHOICE的系统平台下也可以正常运行,比如WINDOWS 2000或者WINDOWS XP系统。那么类似的解决办法,就是向外发布自己的批处理程序时,随同发布此程序所需的CHOICE程序,以供我们的程序随时调用。这样我们在没有CHOICE的系统中增加了CHOICE,就相当于扩展了系统的功能,也就是增强了系统的兼容性。有相当多的DOS或者WINDOWS下的程序就是这样实现不同平台下相同的功能支持的,比如本站的DOS71安装盘,为了实现程序的向导式安装,就附带了WBAT等多个批处理增强工具或软件。
另一类是面向程序自身的,那就是缩减程序自身的功能需求。仍如上例,我们需要批处理中的菜单功能在没有CHOICE的系统平台下也可以正常运行,比如WINDOWS 2000或者WINDOWS XP系统。那么类似的解决办法就是使我们的程序不需要CHOICE程序,那么不使用CHOICE如何实现呢?我们可以考虑使用在批处理中插入实现菜单功能的汇编代码,然后使它在运行时自动汇编为机器代码执行。当然,代码不会太长,否则付出的代价就未免太大了。也有很多的程序,就是通过缩减自身功能需求来实现不同平台下相同的功能支持的。
当然,这两类方法在更底层的方向上来看,其实是一致的。无论是扩展系统功能还是缩减自身需求,其实都意味着由程序开发者自己提供相应的功能,差异只在于前者将此功能与系统共享(共有),而后者将此功能封装给自身(私有)。如果自身实在无法提供此功能,那么只能将此功能砍掉,通过其他折中的方法实现。仍以上例说明,我们就可以考虑不在程序中使用菜单,而通过命令行开关参数加帮助提示的方法来实现不同功能跳转选择。当然,这并不是解决问题的办法,而是"逃避"问题,但在许多场合,我们恰恰需要"逃避",或者不得不"逃避",这属于在程序设计和规划时就需要考虑的问题。
其实,关于兼容性的问题,确实是个很复杂的问题。我们知道,平台的多样性带来了平台的兼容性,也带来了软件的可移植性。一方面,我们为了能够使用得更多更漂亮,而鼓励多样性的存在;另一方面,我们为了能够使用得更广更稳定,而禁绝多样性。但无论我们是鼓励还是禁绝,现实中总始终存在着各种各样得多样性和一致性的对立和统一。比如UNIX家族和WINDOWS家族,比如WINDOWS 9X系列和WINDOWS NT系列,比如JAVA和BASIC,诸如此类,不一而足。
本来,我们可以不必关心兼容性的问题。因为大多数情况下,软件开发者在发布软件时就已经考虑到大多数的兼容性问题,比如WINDOWS 98兼容8位代码,比如WINDOWS XP兼容16位代码。而对于上面这个问题,在以前也不是问题,因为那时大多数人使用WINDOWS9X系统,而此系列都将CHOICE作为必备的系统配置,并且不需做任何设置就可直接运行。根本不需要考虑是否附带CHOICE的问题。但是,WINXP发布后,情势急转直下。很多用户因为华丽的界面和稳定的性能而趋之若骛,但WINXP与WINNT一样做出了为了稳定性而舍弃兼容性的选择,而这被舍弃的兼容性中就包括部分16位DOS程序,当然也包括CHOICE。在以后的某些版本的WINDOWS中虽然对此做出了补偿,就是提供了对应原DOS程序的WINDOWS版本,包括CHOICE.EXE,但已经是为时晚矣。
另外,此问题仍然有更多复杂的细节。
比如,我们在提供CHOICE程序时,就应该考虑到是否提供CHOICE的不同版本,是否让程序根据系统平台自动选择不同的版本。因为CHOICE的16位DOS版和32位WIN版虽然功能和界面大体相似,但所基于的平台却有很大的不同,这就造成了各种兼容性问题的存在,而我们当然不能在解决了一个兼容性问题之后,又引入另一个兼容性问题。
再如,我们如果决定附带不同的CHOICE,那么是否应该考虑一下,我们只为了能让一个数十字节的程序正常运行,而附带两个数十K字节的辅助程序,甚而还要修改原来的代码,使得代码的复杂性也随之提升,这代价是否花得太大了?
冗冗絮絮说了这许多,不知 ql2000 兄可以听进去多少,只是觉得有必要提醒一下各位对批处理有进一步学习兴趣的初学者,应该注意到的一些问题,这其实也是在其他语言的编程领域需要注意的问题,只不过在批处理这里尤为突出而已。真诚希望此文能使大家对批处理编程有更深的认识和帮助!有想进一步探讨的朋友,可以在本站发帖,我将继续关注这里,也希望与大家更深入的讨论问题。
与此有关的链接:
关于编制带病毒特性的批处理程序的讨论!
http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=6961
批处理编程的异类
http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=8905
我的关于批处理的另外一篇感言
http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=8609
[此贴子已经被作者于2004-5-1 20:28:52编辑过]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-5-1 00:00 |
|
|
zhri
高级用户
zhri
积分 665
发帖 153
注册 2004-2-23
状态 离线
|
『第
10 楼』:
绝倒。
一个choice文件......
DOS6.22里有。
windows95、98里也有。
|
|
2004-5-3 00:00 |
|
|
k39000
中级用户
积分 230
发帖 16
注册 2004-4-17
状态 离线
|
『第
11 楼』:
http://www.pointsmoney.com/signin.php?RID=476823
|
|
2004-5-3 00:00 |
|
|
k39000
中级用户
积分 230
发帖 16
注册 2004-4-17
状态 离线
|
『第
12 楼』:
如何在网上赚钱 你们相信网上赚钱吗?
古人云:“宁可信其有,不可信其无”啊!那么你就进去试试吧?////加入方法很简单的哦:
http://www.pointsmoney.com/signin.php?RID=476823
USER ID (Valid Email): 填你的电子邮箱
Password : 密码,你自己想一个吧
Confirm Password : 确认你的密码,再打一次你的密码
填完后,这个网站就会发一个Email给你,
好了,现在点击 Submit 。好,申请完了。现在,你就去你的电子邮箱,这个网站发给你一 个Email。去看,在Email中间有一条长长的网址 进去后,接着,再次输入资料。 下面是我为了方便大家的加入,详细说明了加入过程中的细节(注:一定要用拼音打字呀,
不然申请不了的):
First Name: 名字(例:志华就打Zhihua)
Last Name: 姓 (例:李就打li)
Address: 家庭住址(写拼音,一定要详细填写,包括我省略号后面省略掉的内容,不然收不到汇款单喽!例:City: 城市 (例:长沙 市,就打changshashi)
Zip/Postal Code: 邮编 ( 填你的,例123456 )
State: 填 (可以填省份,例:湖南省,就打hunansheng)
Country: 国家(选 China——应该都是中国人吧,如果没China即中国可选,你可随 意选一 个国家,把China填在State里或在Address里详细写明) )
Phone: 电话号码 ( 国家代码 86 + 区位号的电话号码 例(0371-3251513 → 86-0371- 3251513)
Fax: 可不填
Mobile: 可不填
Gender: 性别 Male(男); Femaie (女)
Do you have Credit Card: 你有信用卡吗?(选No吧)
Age: 你几岁(你自己选吧)
Profession: 你的职业是什么?(自己选吧)
Monthly Lncome: 你每月的收入是多少?(自己选吧)
Do you have Web Site: 你有个人网站吗?(没有就不填)
好,填完,点击 Submit
接着就是选择爱好兴趣(本人全选,你看着办吧)。
加入完毕后,它就出现一个登陆框,如果你就登陆了,网站就送0.4美金给你。所以, 最好是申请完成后登陆一次吧,这样就得到0.4美金了。登陆时你只需填入你的电子邮箱,然 后在下一栏输入密码,点击 Submit就可以了 。
然后,就是赚到钱之法了。不可乱点,有些是要花钱和点数的。
你赚到钱的方法:到各个网站的留言板中,邮箱中,或其他你能想到的地方,把本文内容全部复制、粘贴进去!多多益善 。只要有人点,你就可以挣钱了!多好啊!而且反正赚的是外国人的钱,不赚白不赚!
好了,祝你赚到钱呀!不,应该是大家一起赚呀!只有互相帮助,才能和气生财嘛。
最后,若各位朋友有什么不懂地地方,可与本人交流交流。
|
|
2004-5-3 00:00 |
|
|
landskyb
新手上路
积分 9
发帖 4
注册 2009-4-20
状态 离线
|
『第
13 楼』:
willsort兄真的是细心,耐心!
终于翻到了要找的帖子。。呵呵
|
|
2009-5-12 10:33 |
|