我有两个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
出现此问题,因为每个空格都被视为参数的结尾。
我是脚本新手,任何人都可以给出一些建议/参考。
答案 0 :(得分:2)
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)