[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理怎样用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
哪错了
1

评分人数

    • batman: 当代码不止一行,请用code标签括起PB -2
新手学批处理

3# ml999
errorlevel是返回值的变量名,系统规定。——你这么问就像是问,md c:\hello 将md改为tmd 可不可以建立文件夹一样。

TOP

我开始还觉得choice命令华而不实,还不如set /p ,现在才醒过来——choice不要按回车。

TOP

1# ml999
  1. @echo off
  2. :aa
  3. cls
  4. echo                 please input good or bad
  5. choice /c gb /m input:
  6. if errorlevel 1 goto bb
  7. if errorlevel 2 goto cc
  8. :bb
  9. echo good
  10. echo.
  11. pause
  12.   goto aa
  13. :cc
  14. echo bad
  15. echo.
  16. pause
  17.   goto aa
  18. pause
复制代码
楼主还没明白choice的基本用法。choice是有返回值的,如果你把它当变量用,那还不如用set /p 命令更直接些。

TOP

本帖最后由 batman 于 2011-6-28 08:13 编辑

给个示例你吧:
  1. @echo off&setlocal enabledelayedexpansion
  2. 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"
  3. for %%a in (%str%) do set /a n+=1&set ".!n!=%%a"
  4. :lp
  5. for /l %%a in (1,1,9) do (
  6.     cls&set /p=请输入八位由数字和字母组成的密码,请注意大小写:<nul
  7.     if defined pwds set /p=!pwds!<nul
  8.     if %%a neq 9 (
  9.        choice /n /cs /c %str: =%
  10.        set "pwds=!pwds!*"&call,set "pwd=!pwd!%%.!errorlevel!%%"
  11.     )
  12. )
  13. echo,&echo,&echo %pwd%
  14. if "%pwd%" equ "BatHomes" (
  15.    echo 密码正确
  16.   ) else (
  17.    echo 密码错误
  18. )
  19. pause>nul
复制代码
同时建议楼主好好看看这个贴子:
http://www.bathome.net/viewthrea ... mp;highlight=choice
***共同提高***

TOP

哪个errorlevel可不可以用其他来代替 例如 a    b  c
新手学批处理

TOP

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.

TOP

返回列表