我对Windowsbatch file非常新,所以很抱歉,如果这是完全明显的。
基本上,在一个batch file中,我需要一个三重IF语句来检查命令行是否给出了3个参数。 如果他们在那里,它使用GOTO来执行更多的代码。 如果没有全部三个,那么它会回应错误。
这是迄今为止的代码,这是行不通的
IF defined %1% ( IF defined %2% ( IF defined %3% ( GOTO copyoutvariables ELSE GOTO parametererror ) ) ) :parametererror Echo You did not enter the right amount of parameters. :copyoutvariables Echo Irrelevant Code goes here.
如果我input三个参数,那么它直接到:parametererror
。
我认为ELSE
的语法是错误的。 我真的不知道应该去哪里。 有没有更好的方法来格式化三重IF? 有没有办法和我的IF? ELSE语句应该在哪里?
你的代码有几个问题:
IF defined
只能应用于环境变量,NOT批处理文件参数。 %1%
结构是错误的,因为%1
被第一个参数取代(如果有的话),第二个%
被忽略。 IF "%~1" equ "" echo Parameter 1 not given
。 %1
和%2
参数; 只是为了检查是否给出%3
。 这样,你的代码可能会减少到这个: 。
IF "%~3" neq "" ( GOTO copyoutvariables ) ELSE ( GOTO parametererror )
我认为这是基于一些遥远的记忆的你的包围。
尝试:
IF defined %1% IF defined %2% IF defined %3% ( GOTO :copyoutvariables ) ELSE ( GOTO :parametererror ) :parametererror Echo You did not enter the right amount of parameters. :copyoutvariables Echo Irrelevant Code goes here.
希望有所帮助。
ELSE
周围还需要一些括号。
IF defined %1% ( IF defined %2% ( IF defined %3% ( GOTO copyoutvariables ) ELSE ( GOTO parametererror ) ) )