我试图在Windows脚本上使用if else语句检查一些条件。这是代码块。
if "%1" == "" (
echo empty
) else (
if %1 LSS 1900 (
echo lesser
) else (
if %1 GTR 1900 (
echo greater
)))
我试图根据传递的参数回应这些陈述。更大和更小的条件正在发挥作用。但是,当我没有传递任何参数时,我会在cmd上收到错误消息"此时1900是意外的。"而预期的回声是空的。
请帮我解决这个问题。如果这是一个重复的问题,请直接告诉我答案。我搜索了internetand,我无助。
答案 0 :(得分:2)
那是因为%1
然后计算为空字符串,因此行读取
if LSS 1900 (
这是无效的语法。
这里的问题是所有(因为它在概念上是单个语句)一次解析,甚至是根本没有运行的部分。一种选择是引入一个变量:
set ARG=0
if not "%1"=="" set "ARG=%1"
if "%1" == "" (
echo empty
) else if %ARG% LSS 1900 (
echo lesser
) else if %ARG% GTR 1900 (
echo greater
)
另请注意,额外的块并不是绝对必要的,所以为了便于阅读,我在这里省略了它们。
答案 1 :(得分:0)
上述答案不正确。是的,你应该使用else..if,但如果它是自己的批处理(Windows shell脚本)
SET /P name=
IF %name%=="John" (
ECHO name is john.
) elself %name%!="John"(
ECHO name isn't john
) else (
ECHO Error!
)