检查批处理参数是否为空无效

时间:2014-07-09 12:44:58

标签: batch-file

我不确定我在这里缺少什么,但是仍然使用: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

提前致谢。

2 个答案:

答案 0 :(得分:3)

批处理文件控制流程从上到下,禁止任何goto。控制流程在echo Done!之后继续,因为您没有跳到别处。因此,它包括以下几行。

您可能希望在goto :eof之后添加echo Done!,它会跳转到批处理文件的末尾(这是一种特殊的语法,您不需要提供:eof标签) 。否则你可以重新排序:DONE:NONE标签(但是你会得到一个»完成!«后面的»参数无效«)。

答案 1 :(得分:1)

这是因为你的:NONE跟随你的:DONE,所以在DONE完成之后它将继续在程序中,向右转到NONE,使它看起来像是一个错误。 编辑:有人打败了我,乔伊的回答是正确的!