如何在没有两个if语句的情况下检查wscript.arguments(0)的值

时间:2013-11-28 09:51:10

标签: wsh

我希望能够检查第一个传递给windows脚本的参数的值。但是我希望能够以这样的方式执行它,即如果没有传递参数,脚本将不会给出运行时错误。

这只是一个好奇的问题,因为我可以让我的脚本使用两个if语句,但我想知道是否有办法只用一个(如

monthly = false

if wscript.arguments.count > 0 then 

    if wscript.arguments(0) = "monthly" then

        monthly = true

    end if

end if

如果可以做到这一点会更简洁......

if wscript.arguments.count > 0 and wscript.arguments(0) = "Monthly" then

    monthly = true

end if

但是这会使下标超出范围错误,因为脚本引擎正在尝试检查不存在的数组项的值。

我知道我可以用PHP(if(isset($_POST['somevariable'])) && $_POST['somevariable'] == 'somevalue'

进行这种检查

2 个答案:

答案 0 :(得分:4)

答案是你不能这样做,因为VBScript没有短路和操作员。

由于这是出于好奇,您可以查看以下链接:

http://en.wikipedia.org/wiki/Short-circuit_evaluation

VBScript conditional short-circuiting workaround

答案 1 :(得分:0)

如果参数有多个测试,则不必继续重复双if / then条件。

为参数测试一次并将其放入变量中。之后的所有其他检查只需要一个if / then对抗变量。或使用“案例”进行选择。

dim argument
if wscript.arguments.count > 0 then
    argument = wscript.arguments(0)
end if

if argument = "test1" then
  msgbox "test1"
end if

if argument = "test2" then
  msgbox "test2"
end if