首页 > 解决方案 > 键入 A 或 1 并转到相同的情况

问题描述

我只是在学习批处理脚本,现在我在问我是否可以做类似类型a或相同案例的事情1goto

:start
echo Type in:
A = A
B = B
C = C

set /p option=
echo.

if /i '%option%' == 'A' goto caseA
if /i "%option%" == "1" goto caseA
if /i '%option%' == 'B' goto caseB
if /i "%option%" == "2" goto caseB
if /i '%option%' == 'C' goto caseC
if /i "%option%" == "3" goto caseC

cls
echo invalid Enter
goto start

:caseA
echo I am here because you typed A or 1
echo.
goto end

:caseB
echo I am here because you typed B or 2
echo.
goto end

:caseC
echo I am here because you typed C or 3
echo.
goto end

:end
echo End
pause

有没有办法最小化这部分代码:

if /i '%option%' == 'A' goto caseA
if /i "%option%" == "1" goto caseA
if /i '%option%' == 'B' goto caseB
if /i "%option%" == "2" goto caseB
if /i '%option%' == 'C' goto caseC
if /i "%option%" == "3" goto caseC

我的意思是,我可以为这个代码沙拉使用模板之类的东西。但也许有更容易写的东西。

标签: batch-file

解决方案


一种选择可能是忘记使用Set /Pfor 输入,转而使用Choice.

@Echo Off
Echo 1. A
Echo 2. B
Echo 3. C
Choice /C 1a2b3c /N
If ErrorLevel 5 Echo You entered 3 or C&Pause&Exit /B
If ErrorLevel 3 Echo You entered 2 or B&Pause&Exit /B
Echo You entered 1 or A&Pause&Exit /B

因此,您的具体示例看起来更像这样:

:Start
Echo Type in:
Echo 1. A
Echo 2. B
Echo 3. C
Choice /C 1a2b3c /N
If ErrorLevel 5 GoTo CaseC
If ErrorLevel 3 GoTo CaseB
Echo You are here because you typed A or 1
Echo(
GoTo End

:CaseB
Echo You are here because you typed B or 2
Echo(
GoTo End

:CaseC
Echo You are here because you typed C or 3
Echo(

:End
Echo End
Pause

推荐阅读