我尝试创建一个脚本,检查文件夹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
答案 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