标题: [其他] 批处理怎样用choice来选择? [打印本页]
作者: ml999 时间: 2011-6-27 17:47 标题: 批处理怎样用choice来选择?
输入g 则显示good
输入b 则显示bad
@echo off
:aa
cls
echo please input good or bad
choice /c gb /m input:
pause
if /i "choice"=="g" (goto bb) else (if /i "choice"=="b" goto cc)
:bb
echo good
echo.
pause
goto aa
:cc
echo bad
echo.
pause
goto aa
pause
这段不论是输入g还是b都是显示good
哪错了
作者: caruko 时间: 2011-6-27 18:19
choice 完之后,用 ERRORLEVEL 来判断。
choice /c gb /m input
if %ERRORLEVEL% equ 1 echo,b
if %ERRORLEVEL% equ 2 echo,g
ERRORLEVEL的值>1就是正常选择,值是按照/C的顺序来的, b排在第一个位置,如果按了b,就返回1.
作者: ml999 时间: 2011-6-28 08:00
哪个errorlevel可不可以用其他来代替 例如 a b c
作者: batman 时间: 2011-6-28 08:07
本帖最后由 batman 于 2011-6-28 08:13 编辑
给个示例你吧:- @echo off&setlocal enabledelayedexpansion
- set "str=0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
- for %%a in (%str%) do set /a n+=1&set ".!n!=%%a"
- :lp
- for /l %%a in (1,1,9) do (
- cls&set /p=请输入八位由数字和字母组成的密码,请注意大小写:<nul
- if defined pwds set /p=!pwds!<nul
- if %%a neq 9 (
- choice /n /cs /c %str: =%
- set "pwds=!pwds!*"&call,set "pwd=!pwd!%%.!errorlevel!%%"
- )
- )
- echo,&echo,&echo %pwd%
- if "%pwd%" equ "BatHomes" (
- echo 密码正确
- ) else (
- echo 密码错误
- )
- pause>nul
复制代码
同时建议楼主好好看看这个贴子:
http://www.bathome.net/viewthrea ... mp;highlight=choice
作者: Hello123World 时间: 2011-7-1 17:12
1# ml999 - @echo off
- :aa
- cls
- echo please input good or bad
- choice /c gb /m input:
- if errorlevel 1 goto bb
- if errorlevel 2 goto cc
- :bb
- echo good
- echo.
- pause
- goto aa
- :cc
- echo bad
- echo.
- pause
- goto aa
- pause
复制代码
楼主还没明白choice的基本用法。choice是有返回值的,如果你把它当变量用,那还不如用set /p 命令更直接些。
作者: Hello123World 时间: 2011-7-1 17:15
我开始还觉得choice命令华而不实,还不如set /p ,现在才醒过来——choice不要按回车。
作者: Hello123World 时间: 2011-7-1 17:21
3# ml999
errorlevel是返回值的变量名,系统规定。——你这么问就像是问,md c:\hello 将md改为tmd 可不可以建立文件夹一样。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |