VBS在参数中使用Quote调用CMD

时间:2012-07-12 13:28:50

标签: vbscript cmd

我正在尝试将一段代码作为命令行参数传递给在WinXP上运行的程序。 我无法将整个代码片段作为一个参数传递。 它被SPACE和QUOTE字符分割(如预期的那样)。 使用QUOTE,SLASH或CARAT引用整个事件并转出QUOTE字符也会失败......

Const TheCode = "main(""Literal String Argument"", 123, true)"
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.Run """c:\Folder with space\ArgTest.vbs"" """ & TheCode & """"

我运行以下vbs脚本来回显参数以测试收到的内容。

ArgTest.vbs:

Dim ArgumentIndex
For ArgumentIndex = 0 to Wscript.Arguments.Count - 1
    Call Msgbox(Wscript.Arguments(ArgumentIndex), vbOKOnly+vbInformation, "Argument " & ArgumentIndex)
Next

编辑: 事实证明,它是VBS Echo脚本,可以解决QUOTES问题。使用QUOTE来逃避。

1 个答案:

答案 0 :(得分:0)

Windows中没有标准用于转义引号。完全由应用程序开发人员自行决定如何转义引号。如果您没有为您的应用提供解释如何操作的文档,那么您必须自己发现它(假设该应用甚至支持转义报价)

听起来你试过反斜杠:

Const TheCode = "main(\""Literal String Argument\"", 123, true)"

你还说你试过了插话符号:

Const TheCode = "main(^""Literal String Argument^"", 123, true)"

您是否尝试过加倍报价?

Const TheCode = "main(""""Literal String Argument"""", 123, true)"