Я хочу проверить, был ли указан указанный аргумент c перед проверкой этого аргумента, чтобы я мог предоставить значимые коды ошибок для пропущенных и недопустимых условий. У меня есть это сейчас
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colArgs = WScript.Arguments.Named
If colArgs.Item("Script") Then
If not objFSO.FileExists(colArgs.Item("Script")) Then
intReturn = 1805
End If
Else
intReturn = 1639
End If
If Not intReturn Then
msgBox colArgs.Item("Script"), 0, "Script"
Else
msgBox intReturn, 0, "Error"
End If
И я ожидаю, что если я вообще не предоставлю аргумент Script, я получу сообщение об ошибке msgBox со значением 1639. Вместо этого я получаю хороший msgBox с пробелом для скрипта. Я также пытался
If Not colArgs.Item("Script") = "" Then
РЕДАКТИРОВАТЬ: Per @ Tomalak, у меня теперь есть это
Option Explicit
Dim objShell, objFSO, colArgs, intReturn
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colArgs = WScript.Arguments.Named
If Not IsEmpty(colArgs.Item("Script")) Then
If Not objFSO.FileExists(colArgs.Item("Script")) Then
intReturn = 1805
End If
Else
intReturn = 1639
End If
If IsEmpty(intReturn) Then
msgBox colArgs.Item("Script"), 0, "Script"
Else
msgBox intReturn, 0, "Error"
End If
И для чего это стоит, я называю VBScript из PowerShell, как это
$script = "\\Mac\iCloud Drive\Px Tools\Dev 4.0\#Spikes\Helper\Helper Target.ps1"
$arguments ="`"\\Mac\iCloud Drive\Px Tools\Dev 4.0\#Spikes\Helper\PxHelper.vbs`" //nologo /script:`"$script`" /wait:1"
Start-Process -filePath:Wscript.exe -argumentList:$arguments
И теперь я получаю сообщение об ошибке, даже если сценарий предоставлен. Grrr, понедельник.