是否可以运行" If"在另一个人的声明中#34;如果"声明?

时间:2015-06-05 13:37:06

标签: vbscript

我尝试创建一个脚本,检查文件夹X是否存在,然后在执行代码之前检查文件夹Y是否不存在。

基本上这就是我想要完成的事情:

If "X" folder exists Then
  If "Y" folder doesn't exist Then
    Create "Y" folder
    Create Message box
    Run "Z" CMD file
IF "X" folder doesn't exist Then
  Create "Y" folder
If both "X" and "Y" folder exist then 
  Do Nothing
End IF

注意:我遇到的问题是,我可以让它对3个If语句中的2个进行修改,但永远不会让所有3个都按预期工作。这是我目前正在使用的脚本。我也尝试过使用Else / ElseIf,但似乎无法让它们正常运行。这是我目前正在使用的脚本:

Set WshShell = CreateObject("Wscript.Shell")
vAPPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(vAPPDATA & "\Mozilla\Firefox") Then
    objFSO.CreateFolder(vAPPDATA & "\Mozilla\Update1")
    End If
If objFSO.FolderExists(vAPPDATA & "\Mozilla\Firefox") Then
    If Not objFSO.FolderExists(vAPPDATA & "\Mozilla\Update1") Then
        objFSO.CreateFolder(vAPPDATA & "\Mozilla\Update1")
        x=msgbox("Firefox has been updated and will need to close and reopen to import your profile." ,0, "Firefox Has Been Updated!")
        Dim objShell
        Set objShell = CreateObject("WScript.Shell")
        objshell.run (VAPPDATA & "\test.cmd")
        End If
    If objFSO.FolderExists(vAPPDATA & "\Mozilla\Update1") Then
        End If
    End IF

1 个答案:

答案 0 :(得分:2)

是的,VBScript支持嵌套条件。但是,你的逻辑对我来说似乎不完整(并且不必要地复杂)。你的第二个"外部"条件

IF "X" folder doesn't exist Then

创建文件夹Y仅取决于X不存在的事实,这是代码中此时给出的,因为第一个条件({{1} })评估为"X" folder exists。检查False是否不存在会更有意义:

Y

"什么都不做"是没有Set fso = CreateObject("Scripting.FileSystemObject") If fso.FolderExists("X") Then If Not fso.FolderExists("Y") Then fso.CreateFolder "Y" MsgBox ... CreateObject("WScript.Shell").Run "Z" End If ElseIf Not fso.FolderExists("Y") Then fso.CreateFolder "Y" End If 分支并且未满足给定条件的隐式默认值,因此您不需要显式代码。

话虽如此,您可以通过切换条件来简化代码,因为如果文件夹不存在,两个主分支都会创建Else,但只有Y存在时才执行其他代码:

X