我是vbScript的新手。我有一个脚本要调用,其中包含双引号的参数。以下是电话 .vbs“ a” 2,其中变量a为JO“ N
我的VbScript:
If WScript.Arguments.Count > 0 Then
MsgBox "NAME:" + WScript.Arguments.Item(0)
MsgBox "NAME:" + WScript.Arguments.Item(1)
Else
MsgBox "Please pass a parameter to this script"
End if
*请注意,这在a = JON时有效,但在a = JO“ N。我尝试放置转义字符”时不起作用(示例:“ WScript.Arguments.Item(0)”),但不起作用。
答案 0 :(得分:1)
你不能。
至少,由于WScript
参数解析器处理并删除了Arguments
集合中值的所有引号,因此您不能为此任务使用默认参数处理。
注释:而且,如果您在调用脚本时正在运行的最终命令(您未包括进行调用的方式/位置)是否存在问题,我们将不存在任何问题因为附加引号会干扰参数引号规则。
您需要使用一些解决方法来获取双引号以到达脚本。一些方法可能是:
在调用脚本之前替换引号和任何其他有问题的字符(使用某种转义序列),并还原脚本中的过程。
将要传递的值保存到环境变量中(如何使其取决于脚本的调用方式),然后从脚本中检索值(例如here)。 / p>
使用WMI
检索用于启动脚本的完整命令行,包括所有引号(例如here)并编写自己的参数解析器例程。
从我的角度来看,我将使用第二个选项。
答案 1 :(得分:0)
这将起作用:Chr(34) & Wscript.Arguments.Item(0) & Chr(34)
。这里的Chr(34)
函数使用其ASCII码34返回双引号。