我想知道是否有一种简单的方法可以根据一个表达式的值在 Windows 批处理文件中分支执行。类似于 C、C++、C#、Java、JavaScript、PHP 和其他实际编程语言中的 switch/case 块。
我唯一的解决方法是一个简单的 if/else 块,其中重复检查相同的表达式是否与不同的值相等:
IF "%ID%"=="0" (
REM do something
) ELSE IF "%ID%"=="1" (
REM do something else
) ELSE IF "%ID%"=="2" (
REM do another thing
) ELSE (
REM default case...
)
如此愚蠢。有更好的解决方案吗?
我最终使用了包含 AjV Jsy 建议的 case 表达式值的标签名称。无论如何,我用CALL
代替GOTO
跳到正确的 case 块并GOTO :EOF
跳回来。以下示例代码是一个完整的批处理脚本,说明了这个想法。
@ECHO OFF
SET /P COLOR="Choose a background color (type red, blue or black): "
2>NUL CALL :CASE_%COLOR% # jump to :CASE_red, :CASE_blue, etc.
IF ERRORLEVEL 1 CALL :DEFAULT_CASE # If label doesn't exist
ECHO Done.
EXIT /B
:CASE_red
COLOR CF
GOTO END_CASE
:CASE_blue
COLOR 9F
GOTO END_CASE
:CASE_black
COLOR 0F
GOTO END_CASE
:DEFAULT_CASE
ECHO Unknown color "%COLOR%"
GOTO END_CASE
:END_CASE
VER > NUL # reset ERRORLEVEL
GOTO :EOF # return from CALL
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)