2012-07-12 29 views
0

我想通过一个代码片段作为命令行参数传递给在WinXP上运行的程序。 我一直无法将整个代码片段作为一个参数传递。 它被SPACE和QUOTE字符拆分(如预期的那样)。 引用整个事情,与QUOTE逃逸QUOTE字符,斜线或CARAT也失败了......VBS呼吁CMD与参数中的报价

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脚本回声。使用QUOTE来转义。

回答

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

我正在测试第二个vbs脚本(请参阅编辑过的帖子)。我只是尝试编写一个简单的exe来回应参数。我用它运行它,双引号工作。我想vbs会将引号从传递给它的参数中剥离出来。谢谢 – Adamarla 2012-07-13 06:48:30