else脚本中的if语句

时间:2014-05-05 14:29:00

标签: batch-file

我试图在Windows脚本上使用if else语句检查一些条件。这是代码块。

if "%1" == "" (
echo empty
) else (
if %1 LSS 1900  (
echo lesser
) else (
if %1 GTR 1900 (
echo greater    
)))

我试图根据传递的参数回应这些陈述。更大和更小的条件正在发挥作用。但是,当我没有传递任何参数时,我会在cmd上收到错误消息"此时1900是意外的。"而预期的回声是空的。

请帮我解决这个问题。如果这是一个重复的问题,请直接告诉我答案。我搜索了internetand,我无助。

2 个答案:

答案 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!
)