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

Batch file 如何检查批传递的参数是否存在?,batch-file,Batch File,如何修改以下示例代码,以检查启动批处理文件时是否给出了输入参数 因为检查如果不是%MYDIR%==test失败,如果没有提供参数,则终止批处理过程 SET MYDIR=%1 IF {no parameter given} OR NOT %MYDIR%==test ( ECHO dir is not "test" ) 字符串不能完全为空,解决此约束的一种常见方法是将字符串用引号括起来,如下所示 ... OR NOT "%MYDIR%"=="test" 或者您可以添加一些没有意义的内容而

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

因为检查
如果不是%MYDIR%==test
失败,如果没有提供参数,则终止批处理过程

SET MYDIR=%1

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

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

... OR NOT "%MYDIR%"=="test"
或者您可以添加一些没有意义的内容而不包含字符串(丑陋!)


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

... OR NOT "%MYDIR%"=="test"
或者您可以添加一些没有意义的内容而不包含字符串(丑陋!)


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

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

使用
~
修饰符很重要,因为您无法知道传递的参数是否已包含在引号中。如果像
“this&that”
这样的参数被传递,并且您在添加自己的引号之前没有先删除引号,那么您将得到
If“this&that”eq
&
不再被引用,您的命令也不再正确解析。

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

if "%~1" equ "" echo arg 1 was not passed
使用
~
修饰符很重要,因为您无法知道传递的参数是否已包含在引号中。如果像
“this&that”
这样的参数被传递,并且您在添加自己的引号之前没有先删除引号,那么您将得到
If“this&that”eq
&
不再被引用,您的命令也不再正确解析