|
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 ]
|
|
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 |
|
|