![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-18 17:05 |
共 47,814 主题排行 / 349,908 发帖 / 今日 1 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » choice选择后执行顺序总是不对?附批处理全文 |
| 可打印版本 857 / 4 |
| 第1楼 piepie | 发表于 2007-01-16 23:41 |
| 新手上路 发帖 3 积分 8 | |
|
choice选择后执行顺序总是不对?附批处理全文 做了一个启动的批处理,希望能根据选择从相应盘中恢复克隆文件,但是不管选择1还是2还是3,总是执行第一个,也就是下文的:_restore4,请指教!
------------------------- @echo off rem 这里设置环境和默认加载项 rem 加载smartdrive %RAMDRIVE% sm rem 菜单部分 rem 显示菜单,choice后判断选择的序号来作处理。errorlevel 0是break后的处理 :_top cls %RAMDRIVE% lh TW /np /n3 >nul echo. 数 据 恢 复 echo. echo 1 使用 第1硬盘 第2分区(D盘) 根目录下的SYSBAK.GHO 恢复,覆盖C盘 echo 2 使用 第1硬盘 第3分区(E盘)根目录下的SYSBAK.GHO 恢复,覆盖C盘 echo 3 使用 第1硬盘 第4分区(F盘) 根目录下的SYSBAK.GHO 恢复,覆盖C盘 echo. echo H 帮 助 echo Q 退 出 菜 单 (使用menu再次显示本菜单) echo --------------------------------------------------------- choice "请输入功能代码(123HQ): ",123HQ if errorlevel 5 goto _exit if errorlevel 4 goto _help if errorlevel 3 goto _restore4 if errorlevel 2 goto _restore3 if errorlevel 1 goto _restore2 if errorlevel 0 goto _close :_cdrom rem 加载光驱,完成后暂停查看结果 cls rem TW /Q>nul lh device cd.sys /D:SHSU-CDH lh mscdex /D:SHSU-CDH pause goto _top :_mouse rem 加载鼠标 cls rem TW /Q>nul lh mouse /w lh MOUSCLIP /m pause goto _top :_help rem 帮助 cls lh read.com menu2.txt goto _top rem -------------------------------------- :_restore4 rem 从4恢复,出错提示并返回菜单。正确重新启动 cls echo 以下操作将从F盘的备份恢复,删除C盘所有数据!!! echo 恢复完成后,将重新启动。 choice "是否开始恢复操作? 按Y确定,按N取消操作: ",yn if errorlevel 2 goto _top GHOST -clone,mode=pload,src=1:4\sysbak.GHO:1,dst=1:1 -sure -rb if errorlevel 1 goto _reserror goto _REstart :_restore3 rem 从3恢复,出错提示并返回菜单。正确重新启动 cls echo 以下操作将从E盘的备份恢复,删除C盘所有数据!!! echo 恢复完成后,将重新启动。 choice "是否开始恢复操作? 按Y确定,按N取消操作: ",yn if errorlevel 2 goto _top GHOST -clone,mode=pload,src=1:3\sysbak.GHO:1,dst=1:1 -sure -rb if errorlevel 1 goto _reserror goto _REstart :_restore2 rem 从2恢复,出错提示并返回菜单。正确重新启动 cls echo 以下操作将从D盘的备份恢复,删除C盘所有数据!!! echo 恢复完成后,将重新启动。 choice "是否开始恢复操作? 按Y确定,按N取消操作: ",yn if errorlevel 2 goto _top GHOST -clone,mode=pload,src=1:2\sysbak.GHO:1,dst=1:1 -sure -rb if errorlevel 1 goto _reserror goto _REstart rem -------------------------------------- :_ghost ghost goto _TOP :close rem 关闭的处理,退出所有加载项 TW /np /n3 >nul echo. echo. echo. echo. echo. 在命令行下,输入 menu 返回此菜单!!! echo. echo 按任意键继续.......... pause tw /q >nul MOUSCLIP /u mouse /u cls goto ext :_bakerror rem 备份出错提示,返回菜单 call w.bat box @menu.bat:scx_bf :scx_bf ***************************************************************** 发生错误,可能是硬盘没有找到。请按【确定】返回菜单。 ***************************************************************** [ 确定(&O) ] :: goto _top :_reserror rem 恢复出错提示,返回菜单 call w.bat box @menu.bat:scx_hf :scx_hf ***************************************************************** 发生错误,可能文件不存在。请按【确定】返回菜单。 ***************************************************************** [ 确定(&O) ] :: goto _top :_REstart rem 重新启动计算机 restart.BAT :_exit |
|
| 第2楼 tao0610 | 发表于 2007-01-17 07:51 |
| 高级用户 发帖 218 积分 579 | |
|
choice要加参数
|
|
| 第3楼 piepie | 发表于 2007-01-19 22:17 |
| 新手上路 发帖 3 积分 8 | |
|
这个可能是choice版本的命令不同。我在dos下运行,语法如下:
CHOICE - Waits for the user to choose one of a set of choices. Syntax: CHOICE [/T:hh:mm:ss] "prompt"[,keylist] Default timeout = 1 minute. Keylist is case-insensitive. If keylist is omitted, any keystroke will terminate the delay. Returns errorlevel code = position of keystroke within list, 0 = timed out. 这个问题看来还是没有解决。 |
|
| 第4楼 piepie | 发表于 2007-01-20 05:18 |
| 新手上路 发帖 3 积分 8 | |
|
下了一个msdos7.1用的choice,语法如下。修改后问题依旧。
CHOICE choices] c,nn] /Cchoices Specifies allowable keys. Default is YN /N Do not display choices and ? at end of prompt string. /S Treat choice keys as case sensitive. /Tc,nn Default choice to c after nn seconds text Prompt string to display ERRORLEVEL is set to offset of key user presses in choices. |
|
| 第5楼 chenall | 发表于 2007-01-20 11:21 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
|
应该是标签太长了.
在DOS下标签尽量不要超过8个字符. 将_restore4之类的标签前面的_去掉就刚好8个字符,再试试 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |