![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 14:46 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » wait.com是怎样用的呀? |
| 可打印版本 1,906 / 4 |
| 第1楼 brightsm | 发表于 2005-11-21 19:38 |
| 新手上路 发帖 2 积分 8 | |
|
wait.com是怎样用的呀? wait.com是怎样用的呀?
里面的说明如下: 用法如下 WAIT 秒 最大时间: 1 小时; 默认时间: 无限 返回的Errorlevel值: 0: 超时 1..254: 按键的ASCII码(转为大写) 255: 非ASCII吗键 你的代码可写成 WAIT if errorlevel 89 goto A 这个ASC是Y if errorlevel 78 goto B 这个ASC是N if errorlevel 67 goto C 这个ASC是C IF ERRORLEVEL 11 GOTO B 这个ASC查出来是“起始位置” 但我写如下代码没有用呀! wait 5 please input the number "1" or"2"or"3" rem 这儿停5秒 这儿这句正常执行 if errorlevel 49 goto 1 rem 49是1的ASC if errorlevel 50 goto 2 rem 49是2的ASC if errorlevel 51 goto 3 rem 49是3的ASC if errorlevel 0 goto 1 rem 0超时,这儿作用是不按任何键则运行1代码段 if errorlevel 255 goto 1 :error echo error ekede goto end :1 echo 1 is called goto end :2 echo 2 is called goto end :3 echo 1 is called goto end :end 不管按任何键,上面的代码只能运行代码1段,这是为什么?(包括2键和3键) [ Last edited by brightsm on 2005-11-21 at 19:43 ] |
|
| 第2楼 brightsm | 发表于 2005-11-22 16:28 |
| 新手上路 发帖 2 积分 8 | |
|
算了,还是用choice吧! 算了,还是用choice吧!
我最终选择了choice来完成批处理了! |
|
| 第3楼 JonePeng | 发表于 2005-11-22 19:35 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
楼主想到用WAIT命令来取键盘输入值是很好的想法,但不必这样舍近求远、使用CHOICE。楼主的批处理失败的原因是忽视了errorlevel值必须从高至低来排列这一点,所以 if errorlevel 应该写成这样:
if errorlevel 255 goto null if errorlevel 51 goto 3 if errorlevel 50 goto 2 if errorlevel 49 goto 1 if errorlevel 0 goto 1 我把楼主的测试程序修改成如下 [ Last edited by JonePeng on 2005-11-22 at 19:38 ] |
|
| 第4楼 willsort | 发表于 2005-11-25 21:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re JonePeng:
我记得曾在 “手把手教你写批处理” 的编注中提到,从高到低的逆序并非是 errolevel 的必然要求,而只是 if errorlevel num goto lable 这种代码范式的习惯用法(也不是必须的)。 在这里,我特意强调上述代码以及其他许多初学者代码的失误是在于,未能充分理解 if errorlevel value command arguments 这句代码的含义,它的意义是指:若当前的错误返回码大于等于指定的值 value ,就执行其后面的命令行 command arguments。 我未提到的是,这个 value 未必一定是个整数,它也可以是任意的 ASCII 字符或者其组合,比如 IF ERRORLEVEL ! 便等同于 IF ERRORLEVEL 241,这个特性与 if errorlevel 的命令行极为宽泛的解析算法相关 。 另外,此特性还存在许多扩展的用法,也牵涉到另外几个比较 errorlevel 的技巧,比如如果从 choice 接收了单个字母或数字,可以用以下语句简单判断,这种方法被称为 *BennyLevel Error Checking*。 这是大写字母的接受判断 这是小写字母的接受判断,注意choice并未使用大小写敏感开关 /i ,所以它只是将输入转换为小写保存至变量,而非是接收小写字母。 这是数字的接受判断 这是另一个数字的接受判断,但是并未使用*BennyLevel Error Checking*。 手把手教你写批处理(willsort题注版)全文重贴 http://www.cn-dos.net/forum/viewthread.php?tid=13456&page=2#pid105799 [ Last edited by willsort on 2005-11-25 at 21:26 ] |
|
| 第5楼 JonePeng | 发表于 2005-11-25 21:21 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
感谢willsort版主的提醒和关注!
“手把手”的那个帖子我一年多前看过,现在又更新了那么多精彩的总结,感激不尽! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |