Vbscript VBS在参数中使用引号调用CMD

Vbscript VBS在参数中使用引号调用CMD,vbscript,cmd,Vbscript,Cmd,我试图将一段代码作为命令行参数传递给运行在WinXP上的程序。 我无法将整个代码snipit作为一个参数传递。 它按空格和引号字符进行分割(如预期的那样)。 引用整件事并用引号、斜杠或克拉转义引号字符也是失败的 Const TheCode = "main(""Literal String Argument"", 123, true)" Set oShell = WScript.CreateObject ("WScript.Shell") oShell.Run """c:\Folder with

我试图将一段代码作为命令行参数传递给运行在WinXP上的程序。 我无法将整个代码snipit作为一个参数传递。 它按空格和引号字符进行分割(如预期的那样)。 引用整件事并用引号、斜杠或克拉转义引号字符也是失败的

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脚本弹出了引号。使用引号转义。

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)"

我当时正在用第二个vbs脚本进行测试(见编辑后的文章)。我只是试着写一个简单的exe来回显参数。当我运行它时,双引号起作用。我猜vbs会从传递给它的参数中去掉引号。谢谢