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