在Windos批处理等效实现swich效果
在Windos批处理等效实现swich
用于解决在batch下实现根据一个表达式的值在Windows批处理文件中分支执行。类似于在C,C++,C#,Java,JavaScript,PHP和其他实际编程语言中切换/区分大小写的内容。
已知的一种解决方法是普通的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建议的大小写表达式的值。无论如何,我使用CALL
而不是GOTO
跳入正确的大小写块,并使用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
原文链接
batch-file - Windows批处理文件中的switch语句等效
Switch statement equivalent in Windows batch file
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。