中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 多选菜单要全部选择(用set,if,goto吗,咋用?)(已结)
作者:
标题: 多选菜单要全部选择(用set,if,goto吗,咋用?)(已结) 上一主题 | 下一主题
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『楼 主』:  多选菜单要全部选择(用set,if,goto吗,咋用?)(已结)

问题如题,

偷懒的办法是将01.....11的命令复制到:12下,这个cmd的文件就大多了,不好的
@echo off

:MENU
-------------------------------------------------  
echo          01.  --a      xxxx                                 
echo          02.  --b      xxxx                     
echo          03.  --c      xxxx                                    
echo          04.  --d      xxxx                                 
echo          05.  --e      xxxx                     
echo          06.  --f       xxxx                             
echo          07.  --g      xxxx                                   
echo          08.  --h      xxxx              
echo          09.  --i       xxxx                                                   
echo         10.  --j         xxxx                 
echo         11.  --k       xxxx      
echo         12.  --l        全部选择                                            
echo         13.  --r       重启电脑                                            
echo          14.  --q      直接退出                                            
----------------------------------------------
echo.
:cho
SET XZ1=
set /P xz1=       请选择(a,b,c,d,e,f,g,h,i,j,k,l,m,q):
if /I "%xz1%"=="q" goto :END
if /I "%xz1%"=="r" goto 13
if /I "%xz1%"=="l" goto 12
if /I "%xz1%"=="k" goto 11
if /I "%xz1%"=="j" goto 10
if /I "%xz1%"=="i" goto 09
if /I "%xz1%"=="h" goto 08
if /I "%xz1%"=="g" goto 07
if /I "%xz1%"=="f" goto 06
if /I "%xz1%"=="e" goto 05
if /I "%xz1%"=="d" goto 04
if /I "%xz1%"=="c" goto 03
if /I "%xz1%"=="b" goto 02
if /I "%xz1%"=="a" goto 01
echo 选择无效,请重新输入
echo.
goto cho

:01
cls
.
.
.
goto MENU

:02
cls
.
.
.
goto MENU
.
.
.
.
:13
shutdown -t 3
goto MENU

:end
[ Last edited by qingfushuan on 2007-6-28 at 08:28 PM ]

2007-6-28 19:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
duanml
中级用户




积分 231
发帖 112
注册 2007-6-19
状态 离线
『第 2 楼』:  

多选?

我过去都是用CHOICE做菜单的,但是每次只能单选,然后循环输入。

你可以设置一个变量,在每个goto里,变量和预置数相同就自动跳到下一个goto里,不跳出,依次执行,就可以不用专门做一个全执行goto了。

比如输入变量=12,那在:goto 1的尾端加个if判定,变量和12相同,则跳到:goto 2。

[ Last edited by duanml on 2007-6-28 at 07:27 PM ]

   此帖被 +2 点积分      点击查看详情   
评分人:【 qingfushuan 分数: +2  时间:2007-6-28 20:27


2007-6-28 19:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『第 3 楼』:  

是我想复杂了,我以为在每个goto中%qbxz%是变量名和值是变化的呢,应该为:
@echo off

:MENU
-------------------------------------------------  
echo          01.  --a      xxxx                                 
echo          02.  --b      xxxx                     
echo          03.  --c      xxxx                                    
echo          04.  --d      xxxx                                 
echo          05.  --e      xxxx                     
echo          06.  --f       xxxx                             
echo          07.  --g      xxxx                                   
echo          08.  --h      xxxx              
echo          09.  --i       xxxx                                                   
echo         10.  --j         xxxx                 
echo         11.  --k       xxxx      
echo         12.  --l        全部选择                                            
echo         13.  --r       重启电脑                                            
echo          14.  --q      直接退出                                            
----------------------------------------------
echo.
:cho
SET XZ1=
set /P xz1=       请选择(a,b,c,d,e,f,g,h,i,j,k,l,m,q):
if /I "%xz1%"=="q" goto :END
if /I "%xz1%"=="r" goto 13
if /I "%xz1%"=="l" goto 12
if /I "%xz1%"=="k" goto 11
if /I "%xz1%"=="j" goto 10
if /I "%xz1%"=="i" goto 09
if /I "%xz1%"=="h" goto 08
if /I "%xz1%"=="g" goto 07
if /I "%xz1%"=="f" goto 06
if /I "%xz1%"=="e" goto 05
if /I "%xz1%"=="d" goto 04
if /I "%xz1%"=="c" goto 03
if /I "%xz1%"=="b" goto 02
if /I "%xz1%"=="a" goto 01
echo 选择无效,请重新输入
echo.
goto cho

:01
cls
.
.
if "%qbxz%"=="0" goto 02
goto MENU

:02
cls
.
.
if "%qbxz%"=="0" goto 03
goto MENU
.
.
:
:12
set qbxz=0
goto01

:13
shutdown -t 3

:end
[ Last edited by qingfushuan on 2007-6-29 at 05:07 PM ]

2007-6-28 20:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 4 楼』:  

减少选择部分脚本
@echo off
setlocal EnableDelayedExpansion
:MENU
cls
echo -------------------------------------------------  
echo          01.  --a      xxxx                                 
echo          02.  --b      xxxx                     
echo          03.  --c      xxxx                                    
echo          04.  --d      xxxx                                 
echo          05.  --e      xxxx                     
echo          06.  --f      xxxx                             
echo          07.  --g      xxxx                                   
echo          08.  --h      xxxx              
echo          09.  --i      xxxx                                                   
echo          10.  --j      xxxx                 
echo          11.  --k      xxxx      
echo          12.  --l      全部选择                                            
echo          13.  --r      重启电脑                                            
echo          14.  --q      直接退出                                            
echo ----------------------------------------------
echo.
set Num=
SET XZ1=
set /P xz1=       请选择(a,b,c,d,e,f,g,h,i,j,k,l,r,q):
for %%n in (a b c d e f g h i j k l r q) do (
    set /a Num+=1&set str=0!Num!&set str=!str:~-2!
  if /i "%xz1%" == "%%n" goto !str!
)
echo 选择无效,请重新输入
echo.
pause
goto MENU




2007-6-28 20:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: