0

私は 2 つの VB スクリプトを持っています。First.vbsとSecond.vbsと言います。

Frist.vbsは、アクション/イベントが発生するたびにSecond.vbsを呼び出します。

次のコードを使用してFrist.vbsからSecond.vbsに2 つのパラメーターを送信しようとしています。

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

この問題は、各スペースがパラメーターの末尾と見なされるために発生します。

私はスクリプトを初めて使用します。誰か提案/参照を与えることができますか?

4

1 に答える 1

2

の値にparam2スペースが含まれており、パラメーターを二重引用符で囲んでいません。そのため、Runコマンドラインには実質的に 3 つの引数があります。

  • いらっしゃいませ
  • ゴクル
  • ナス

それを避けるには、2 番目の引数を二重引用符で囲みます。

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)
于 2013-03-08T15:17:01.077 に答える