首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理文件的开关箱

批处理文件的开关箱
EN

Stack Overflow用户
提问于 2018-12-18 14:13:33
回答 1查看 11.3K关注 0票数 1

我目前正在阅读Elias的"Batchography: Batch Files编程的艺术“,并且正在使用一个脚本来演示开关用例的使用以及如何实现它,因为它不是内置的。

无论如何,他使用/创建的脚本之一--我无法理解它是如何在输入3或4时得到答案的。

脚本在下面,如果您从switch-case.bat中检索它,它被称为GitHub网站

有人能解释一下,当你使用3或4的时候,即使标签上没有一个实际的案例,但“失败”的答案是怎样的呢?

谢谢您,我们非常感谢您的帮助。

代码语言:javascript
复制
@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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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行以上.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53834940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档