VBScript检查所有OR条件?

时间:2014-05-04 13:11:05

标签: if-statement vbscript

也许我错过了什么,但令我很生气的是,VBScript似乎阅读了所有的OR条件。例如,我想做这样的事情:

If (oFS.FileExists(sFileLoc) = False) Or (sNewText <> oFS.OpenTextFile(sFileLoc).ReadAll) Then

现在我收到错误,因为第二个条件,该文件不存在。我希望如果文件不存在,VBScript会立即跳到结果,如果 ,它会检查第二个条件。

我是对的,这是正常行为吗?

2 个答案:

答案 0 :(得分:3)

作为M. Harris already said in 2003和逻辑运算符的文档(例如Or)明确规定,VBScript不会使条件的评估短路。您必须使用nested Ifs或稍微看中Select Case

答案 1 :(得分:0)

您可以使用内联嵌套IF来实现VBScript中的短路。例如,您可以像这样重写您的语句:

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then

但是必须在与此语句相同的行中指定Then条件。因此,如果由于这种情况需要执行多个操作,则必须使用冒号(:)分隔语句,冒号是VBScript中的单行语句分隔符。

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then x = 1 : y = 2

您也可以将您的逻辑移到SubFunction并拨打电话:

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then DoStuff

另请注意,如果您需要指定Else子句,则必须在此行中指定。

If oFS.FileExists(sFileLoc) Then If sNewText = oFS.OpenTextFile(sFileLoc).ReadAll Then x = 1 Else x = 2