Сценарий VB не распознает фактический параметр

У меня есть два сценария VB. Произнесите First.vbs и Second.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

Эта проблема возникает, поскольку каждый пробел считается концом параметра.

Я новичок в написании сценариев, может кто-нибудь дать какое-нибудь предложение/ссылку.


person Gokul Nath KP    schedule 08.03.2013    source источник


Ответы (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)
person Ansgar Wiechers    schedule 08.03.2013
comment
Привет, Вихерс, не могли бы вы помочь мне с этим вопросом: stackoverflow.com/questions/15516311/ - person Gokul Nath KP; 20.03.2013