我对Windows批处理文件非常新,所以很抱歉,如果这是非常明显的。
基本上,在批处理文件中,我需要一个三重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.
如果我输入三个参数,那么它会直接进入:parametererror
。
我认为ELSE
的语法是错误的。我真的不知道应该去哪里。
有没有更好的格式化三重IF的方法?
有没有办法和我的IF?
ELSE声明应该在哪里?
答案 0 :(得分:2)
我认为这是基于遥远记忆的包围。
尝试:
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.
希望有所帮助。
答案 1 :(得分:0)
您的代码有几个问题:
IF defined
只能应用于环境变量,而非批处理文件参数。%1%
构造错误,因为%1
被第一个参数(如果有)替换,第二个%
被忽略。IF "%~1" equ "" echo Parameter 1 not given
。%1
和%2
参数;只是为了检查是否给出了%3
。这样,您的代码可能会缩减为以下代码:
IF "%~3" neq "" (
GOTO copyoutvariables
) ELSE (
GOTO parametererror
)