gpt4 book ai didi

vbscript - 测试 VBScript 命名参数是否存在

转载 作者:行者123 更新时间:2023-12-01 11:11:06 25 4
gpt4 key购买 nike

我想在验证该参数之前测试是否提供了特定的命名参数,因此我可以为缺失和无效条件提供有意义的错误代码。我现在有这个

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 的参数,我会得到值为 1639 的错误消息框。相反,我得到了良好的 msgBox,脚本为空白。我也试过了

If Not colArgs.Item("Script") = "" Then

编辑:根据@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

为了它的值(value),我像这样从 PowerShell 调用 VBScript

$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

现在即使提供了脚本我也得到了错误条件。哎呀,星期一。

最佳答案

如果在命令行中没有给出命名参数

  • WScript.Arguments.Named.Exists("argname") 将返回 False
  • WScript.Arguments.Named("argname") 将返回一个空值

如果在命令行中给定了一个命名参数但没有赋值(/argname)

  • WScript.Arguments.Named.Exists("argname") 将返回 True
  • WScript.Arguments.Named("argname") 将返回一个空值

如果在命令行 (/argname:) 中给定的命名参数带有空字符串

  • WScript.Arguments.Named.Exists("argname") 将返回 True
  • WScript.Arguments.Named("argname") 将返回一个空字符串

如果命名参数在命令行中给出了一个值(/argname:value)

  • WScript.Arguments.Named.Exists("argname") 将返回 True
  • WScript.Arguments.Named("argname") 将返回具有该值的字符串

空值与空字符串不同:它们是未初始化的,而空字符串是零长度的常规字符串。

您可以使用 IsEmpty() 函数检查空值。

If Not WScript.Arguments.Named.Exists("foo") Then
' show message / end script / use default
End If

If IsEmpty(WScript.Arguments.Named("foo")) Then
' show message / end script / use default
End If

关于vbscript - 测试 VBScript 命名参数是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60372784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com