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

[其他] BAT输入多选时就闪退,怎么才完美解决呢?

  1. :s
  2. cls
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. echo.
  6. echo;A. 广东       B. 江西       C. 湖北
  7. echo.
  8. set /p start=请选择:
  9. echo.
  10. if %start%==1 goto 1
  11. for %%a in (%start%) do call :%%a
  12. pause>nul&goto end
  13. :A
  14. echo;广东
  15. goto :eof
  16. :B
  17. echo;江西
  18. goto :eof
  19. :C
  20. echo;湖北
  21. goto :eof
  22. :1
  23. echo 您输入的是1,1234的1
  24. pause>nul&goto s
复制代码
输入多选时就闪退,如a,c
去掉if %start%==1 goto 1这一行,多选就没问题,怎么才完美解决呢?

If "%start:"=""%" equ "1" goto 1

TOP

本帖最后由 /zhqsystem/zhq 于 2017-9-11 13:40 编辑

第14-16行部分代码为原问题错误解决方案
以下为建议代码循环,仅作参考
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call:s
  4. echo,调用完成
  5. pause
  6. exit
  7. :s
  8. cls
  9. echo.
  10. echo;A. 广东       B. 江西       C. 湖北
  11. echo.
  12. set /p start=输入NO退出死循环,输入exit退出:
  13. echo.
  14. if /i "%start%"=="no" goto:eof
  15. if /i "%start%"=="exit" exit
  16. if /i "%start%"=="1" call:1
  17. for %%a in (%start%) do call:%%a
  18. goto:s
  19. :A
  20. echo;广东
  21. goto:eof
  22. :B
  23. echo;江西
  24. goto:eof
  25. :C
  26. echo;湖北
  27. goto:eof
  28. :1
  29. echo 您输入的是1,1234的1
  30. ping /n 3 127.1 >nul
  31. goto:eof
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

最好在前面if后面加个else。作为提示。。
@echo off
setlocal enabledelayedexpansion
call:s
echo,调用完成
pause
exit
:s
cls
echo.
echo;A. 广东       B. 江西       C. 湖北
echo.
set /p start=输入NO退出死循环,输入exit退出:
echo.
if /i "%start%"=="no" goto:eof
if /i "%start%"=="exit" exit
if /i "%start%"=="1" (call:1) else (echo 请输入正确字母&ping /n 3 127.1 >nul)
for %%a in (%start%) do call:%%a
goto:s
:A
echo;广东
goto:eof
:B
echo;江西
goto:eof
:C
echo;湖北
goto:eof
:1
echo 您输入的是1,1234的1
ping /n 3 127.1 >nul
goto:eof
而且感觉楼主代码有点繁杂和重复

TOP

  1. @echo off
  2. set aa=A. 广东
  3. set bb=B. 江西
  4. set cc=C. 湖北
  5. :s
  6. cls
  7. echo;%aa%      %bb%       %cc%
  8. echo;&set /p start=请选择:
  9. if %start%==1 goto 1
  10. for /f "tokens=2 delims==" %%a in ('set^|find "%start%."') do echo;%%a
  11. pause>nul&goto s
  12. :1
  13. echo 您输入的是1,1234的1
  14. pause>nul&goto s
复制代码

TOP

返回列表