0

我正在尝试将一段代码作为命令行参数传递给在 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 脚本指出了引号。使用 QUOTE 转义。

4

1 回答 1

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)"
于 2012-07-12T13:45:08.183 回答