如何检查批传递参数是否存在?

时间:2013-06-13 11:06:45

标签: batch-file

如何修改以下示例代码以检查在启动批处理文件时是否给出了输入参数?

因为检查IF NOT %MYDIR%==test失败并在没有提供参数的情况下终止批处理。

SET MYDIR=%1

IF {no parameter given} OR NOT %MYDIR%==test (
   ECHO dir is not "test"
)

2 个答案:

答案 0 :(得分:3)

在处理传递的参数时,处理所有可能性是非常困难的。但是,以下策略适用于大多数“普通”情况。

if "%~1" equ "" echo arg 1 was not passed

使用~修饰符非常重要,因为您无法知道传递的参数是否已用引号括起来。如果传递了"this&that"这样的参数,并且在添加自己的引号之前没有先删除引号,那么就会获得if ""this&that"" equ ""。 <{1}}不再被引用,您的命令不再正确解析。

答案 1 :(得分:0)

字符串不能完全为空,解决此约束的常用方法是将字符串括在引号中,如下所示

... OR NOT "%MYDIR%"=="test"

或者你可以添加一些没有意义的东西而不包括字符串(丑陋!)

... OR NOT XXX%MYDIR%==XXXtest