我目前正在阅读Elias的"Batchography: Batch Files编程的艺术“,并且正在使用一个脚本来演示开关用例的使用以及如何实现它,因为它不是内置的。
无论如何,他使用/创建的脚本之一--我无法理解它是如何在输入3或4时得到答案的。
脚本在下面,如果您从switch-case.bat中检索它,它被称为GitHub网站。
有人能解释一下,当你使用3或4的时候,即使标签上没有一个实际的案例,但“失败”的答案是怎样的呢?
谢谢您,我们非常感谢您的帮助。
@echo off
setlocal
set /P N=Enter number:
call :nested-if
echo.
call :switch-case
echo.
call :switch-case-combined
echo.
call :switch-case-fallthrough
goto :eof
:nested-if
echo Nested IFs...
if %N%==1 (
echo One
) ELSE (
if %N%==2 (
echo Two
) ELSE (
if %N%==3 (
echo Three
) ELSE (
echo Something else
)
)
)
echo After IFs
goto :eof
:switch-case
echo Switch/case
:: Call and mask out invalid call targets
call :switch-case-N-%N% 2>nul || (
:: Default case
echo Something else
)
goto :switch-case-end
:switch-case-N-1
echo One
goto :eof
:switch-case-N-2
echo Two
goto :eof
:switch-case-N-3
echo Three
goto :eof
:switch-case-end
echo After Switch/case
goto :eof
:switch-case-combined
echo Switch/case combined
:: Call and mask out invalid call targets
call :switch-case-N-%N% 2>nul || (
:: Default case
echo Something else
)
goto :switch-case-end
:switch-case-N-1
:switch-case-N-2
echo One or two
goto :eof
:switch-case-N-3
:switch-case-N-4
echo Three or Four
goto :eof
:switch-case-end
echo After Switch/case combined
goto :eof
:switch-case-fallthrough
echo Switch/case fallthrough
:: Call and mask out invalid call targets
call :switch-case-N-%N% 2>nul || (
:: Default case
echo Something else
)
goto :switch-case-end
:switch-case-N-1
echo One
:: Fallsthrough
:switch-case-N-2
echo Two
goto :eof
goto :eof
:switch-case-end
echo After Switch/case fallthrough
goto :eof发布于 2018-12-18 15:25:22
goto从当前位置向下搜索标签。如果它找不到标签,它将继续从脚本的顶部搜索。
因此,在switch-case-fallthrough一节中,3在上面的Switch/case部分找到标签:switch-case-N-3,并在那里继续。(您可以通过将第57行的echo Three更改为echo Three [here I am]来证明这一点)
同样的方式,在截面开关-案例下降通过4达到第86行以上.
https://stackoverflow.com/questions/53834940
复制相似问题