2013-11-28 171 views
1

我希望能夠檢查第一個傳遞參數的值到一個Windows腳本。但我希望能夠這樣做,即如果沒有參數傳遞,腳本不會給出運行時錯誤。如何檢查wscript.arguments(0)的值沒有兩個if語句

這只是好奇的問題,因爲我能得到我的劇本有兩個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'

+0

也許是一個愚蠢的問題,但是這個VBScript? –

+0

是的,我將問題標記爲wscript,默認情況下不是vbscript? – MrVimes

+0

我不完全合格,這是誠實的。但是,如果(cond1和cond2)**在VBScript中被允許。 –

回答

4

答案是你不能這樣做,因爲VBScript沒有短路和運算符。

由於這是出於好奇,你可以檢查這些鏈接:

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

VBScript conditional short-circuiting workaround

+0

謝謝。儘可能多地思考。但是我有點強迫症,所以我喜歡探索'乾淨'的做事方式,然後才能解決在解決編碼問題時首先遇到的稍微尷尬的方式。 – MrVimes

+0

「選擇案例」被標記爲替代品,但它並不像嵌套那樣看起來更乾淨,如果我真的不認爲它是重要的。 –

0

如果沒有爲參數超過一個測試,你就不必不停地重複雙if/then條件。

爲參數測試一次並將其放入一個變量中。所有其他檢查後,只需要一個/如果/然後對變量。或者使用'case'來選擇。

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