我不确定我在这里缺少什么,但是仍然使用:NONE选项传递脚本的参数?
实际脚本:
@ECHO off
CLS
ECHO.
:: DO NOT EDIT THE FOLLOWING LINES
SET ARG=%1
IF "%ARG%"=="-commit" GOTO COMMIT
IF "%ARG%"=="-checkout" GOTO CHECKOUT
IF "%ARG%"=="-tag" GOTO TAG
IF "%ARG%"=="" GOTO NONE
:CHECKOUT
ECHO checkout
GOTO DONE
:TAG
ECHO reserve tag
GOTO DONE
:COMMIT
ECHO commit
GOTO DONE
:DONE
ECHO Done!
:NONE
ECHO argument not valid
测试结果:
结果:test.bat -tag
[NOK]
reserve tag
Done!
argument not valid
结果:test.bat
[确定]
argument not valid
提前致谢。
答案 0 :(得分:3)
批处理文件控制流程从上到下,禁止任何goto
。控制流程在echo Done!
之后继续,因为您没有跳到别处。因此,它包括以下几行。
您可能希望在goto :eof
之后添加echo Done!
,它会跳转到批处理文件的末尾(这是一种特殊的语法,您不需要提供:eof
标签) 。否则你可以重新排序:DONE
和:NONE
标签(但是你会得到一个»完成!«后面的»参数无效«)。
答案 1 :(得分:1)
这是因为你的:NONE跟随你的:DONE,所以在DONE完成之后它将继续在程序中,向右转到NONE,使它看起来像是一个错误。 编辑:有人打败了我,乔伊的回答是正确的!