【问题标题】:How can I escape double quotes on command line to .vbs script?如何将命令行上的双引号转义为 .vbscript?
【发布时间】:2011-09-24 16:10:31
【问题描述】:

我有一个脚本。我想将其中包含双引号的行发送到该脚本,如下所示: Cscript myScript.vbs "Testing "this line""

但是行内的双引号使得它永远不会正确地到达脚本。我尝试使用克拉 (^) 转义或使用双双引号 ("Testing ""this line""") 得到不同的结果,但没有一个是我想要的结果(脚本获取测试“这一行”)。

为了证明我需要这样做的理由,我正在尝试将一条 SQL 行发送到将编辑我的 Orca 表的脚本,并且其中一个值需要双引号才能执行我想要执行的操作与逆戟鲸。

【问题讨论】:

    标签: windows command-line command-line-arguments


    【解决方案1】:

    你可以试试这个:

    这里是 vb 脚本 x.vbs:

    Wscript.Echo Unescape(Wscript.Arguments.Item(0))
    

    这是运行它的输出:

    D:\>cscript x.vbs "Testing %22this line%22"
    Microsoft (R) Windows Script Host Version 5.8
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    Testing "this line"
    

    如果将所有 " 替换为 %22,您将能够使用此方法传递双引号。

    【讨论】:

    • 从批处理文件中调用 vbscript 时,您可以使用 %%22 而不是 "。注意双百分号 - 这里 % 用于转义自身。
    【解决方案2】:

    这是无法做到的。我已经尝试了所有方法,唯一的方法是在你的 VBS 中指定一些字符串来表示“,并将指定字符串的命令行参数实例替换为”。我选择了一些不太可能成为问题的东西 :!: 是我用来表示“。”的字符串。

    在我的代码中,我添加了以下内容:

    strArgu0 = Wscript.Arguments(0)
    strOldSTR = Replace(strArgu0,":!:","""")
    

    【讨论】:

      【解决方案3】:

      我见过的示例在引号前使用反斜杠来转义它。一个常见的例子是将日志记录选项传递给安装程序(Windows 安装程序包)

      Setup.exe /v"/l*v \"c:\My Log Files\test.log\" /qn"
      

      【讨论】:

        猜你喜欢
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-19
        相关资源
        最近更新 更多