0

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

因为IF NOT %MYDIR%==test如果没有提供参数,检查失败并终止批处理。

SET MYDIR=%1

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

2 回答 2

4

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

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

使用修饰符很重要,~因为您无法知道传递的参数是否已经包含在引号中。如果传递了一个参数 like"this&that"并且您没有在添加自己的引号之前先删除引号,那么您会得到if ""this&that"" equ "". &不再引用,并且您的命令不再正确解析。

于 2013-06-13T11:47:24.673 回答
0

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

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

或者您可以在不包含字符串的情况下添加一些无意义的内容(丑陋!)

... OR NOT XXX%MYDIR%==XXXtest
于 2013-06-13T11:33:08.723 回答