batch-file - 键入 A 或 1 并转到相同的情况
问题描述
我只是在学习批处理脚本,现在我在问我是否可以做类似类型a
或相同案例的事情1
。goto
: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
我的意思是,我可以为这个代码沙拉使用模板之类的东西。但也许有更容易写的东西。
解决方案
一种选择可能是忘记使用Set /P
for 输入,转而使用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
推荐阅读
- java - Java:如何从头开始重新启动程序?
- r - 在 R 中计算具有不同权重和缺失值的加权平均值
- system-verilog - 如何使用参数在系统 verilog 接口和 modport 中添加或删除信号
- python-3.x - 刽子手:仅在几次正确猜测后注册为正确
- php - WooCommerce 从产品/类别中删除包装标签
- c - 我是否在我的堆实现的添加函数中正确实例化指针
- swift - 继承自 EKCalendarItem
- c# - HttpPost asp mvc 上的 ConcurrencyException
- ios - 检索照片的拍摄时间
- unicode - 可能的 Unicode 日文数字/小数?