【问题标题】:VB Script does not recognize the actual parameterVB Script 无法识别实际参数
【发布时间】:2023-04-09 06:28:01
【问题描述】:

我有两个 VB 脚本。说 First.vbsSecond.vbs

Frist.vbs 在每次发生某些动作/事件时调用 Second.vbs

我正在尝试使用以下代码将两个参数从 Frist.vbs 发送到 Second.vbs

First.vbs的内容:

Set objShell = Wscript.CreateObject("WScript.Shell")
param1 = "Welcome"
param2 = "Gokul Nath"
objShell.Run "Second.vbs" & " " & param1 & " " & param2
Set objShell = Nothing

Second.vbs的内容:

param1= Wscript.Arguments.Item(0)
param2 = Wscript.Arguments.Item(1)
WScript.Echo(param1)
WScript.Echo(param2)

我收到以下 Echo 消息:

Welcome - Which is correct, since I've passed "Welcome" from First.vbs
Gokul - Which is WRONG, since I've passed "Gokul Nath" from First.vbs

出现此问题,因为每个空格都被视为参数的结尾。

我是脚本新手,谁能给点建议/参考。

【问题讨论】:

    标签: scripting vbscript scripting-language


    【解决方案1】:

    param2 的值包含一个空格,并且您没有将参数放在双引号之间。因此,您的 Run 命令行实际上有 3 个参数:

    • 欢迎
    • 悟空
    • 内斯

    为避免在第二个参数周围添加双引号:

    objShell.Run "Second.vbs" & " " & param1 & " """ & param2 & """"
    

    更好的是,引用 所有 参数并使用引用函数,这样您就不会被双引号淹没:

    Function qq(str)
      qq = Chr(34) & str & Chr(34)
    End Function
    
    objShell.Run "Second.vbs" & " " & qq(param1) & " " & qq(param2)
    

    【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2013-08-09
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2013-07-14
    • 2021-09-28
    相关资源
    最近更新 更多