Batch file 切换批处理文件的大小写

Batch file 切换批处理文件的大小写,batch-file,switch-statement,Batch File,Switch Statement,我目前正在阅读Elias Bachaalany的《批处理:批处理文件编程的艺术》,我正在使用一个脚本来演示开关用例的使用以及如何实现这一点,因为它不是内置的 不管怎么说,他使用/创建的脚本中有一个我一辈子都无法理解,当你输入3或4时,它是如何得到答案的 脚本在下面,如果从中检索脚本,则会调用该脚本 有人能解释一下,当你使用3或4时,即使标签上没有实际写的案例,但答案是“fallthrough”吗 谢谢,非常感谢您的帮助 goto从当前位置向下搜索标签。如果找不到标签,它将继续从脚本顶部进行搜索

我目前正在阅读Elias Bachaalany的《批处理:批处理文件编程的艺术》,我正在使用一个脚本来演示开关用例的使用以及如何实现这一点,因为它不是内置的

不管怎么说,他使用/创建的脚本中有一个我一辈子都无法理解,当你输入3或4时,它是如何得到答案的

脚本在下面,如果从中检索脚本,则会调用该脚本

有人能解释一下,当你使用3或4时,即使标签上没有实际写的案例,但答案是“fallthrough”吗

谢谢,非常感谢您的帮助



goto
从当前位置向下搜索标签。如果找不到标签,它将继续从脚本顶部进行搜索

因此,在
切换案例故障排除部分中,
3
在上面的
切换案例
部分找到标签
:switch-case-N-3
,并在那里继续。(您可以通过将第57行中的
echo Three
更改为
echo Three[我在这里]
来证明这一点)

同样的方法,在区段开关情况下,直通
4
到达上述第86行

@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