标题: [其他] BAT输入多选时就闪退,怎么才完美解决呢? [打印本页]
作者: zhaofeng0420 时间: 2017-9-10 22:54 标题: BAT输入多选时就闪退,怎么才完美解决呢?
- :s
- cls
- @echo off
- setlocal enabledelayedexpansion
- echo.
- echo;A. 广东 B. 江西 C. 湖北
- echo.
- set /p start=请选择:
- echo.
- if %start%==1 goto 1
- for %%a in (%start%) do call :%%a
- pause>nul&goto end
- :A
- echo;广东
- goto :eof
- :B
- echo;江西
- goto :eof
- :C
- echo;湖北
- goto :eof
- :1
- echo 您输入的是1,1234的1
- pause>nul&goto s
复制代码
输入多选时就闪退,如a,c
去掉if %start%==1 goto 1这一行,多选就没问题,怎么才完美解决呢?
作者: 老刘1号 时间: 2017-9-10 23:06
If "%start:"=""%" equ "1" goto 1
作者: /zhqsystem/zhq 时间: 2017-9-11 13:31
本帖最后由 /zhqsystem/zhq 于 2017-9-11 13:40 编辑
第14-16行部分代码为原问题错误解决方案
以下为建议代码循环,仅作参考
- @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
- 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
复制代码
作者: 1055367558 时间: 2017-9-15 18:40
最好在前面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
而且感觉楼主代码有点繁杂和重复
作者: taofan712 时间: 2017-9-16 11:48
- @echo off
- set aa=A. 广东
- set bb=B. 江西
- set cc=C. 湖北
- :s
- cls
- echo;%aa% %bb% %cc%
- echo;&set /p start=请选择:
- if %start%==1 goto 1
- for /f "tokens=2 delims==" %%a in ('set^|find "%start%."') do echo;%%a
- pause>nul&goto s
- :1
- echo 您输入的是1,1234的1
- pause>nul&goto s
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |