【问题标题】:Is there an escaping character (when using double-quotes in string declarations)? [closed]是否有转义字符(在字符串声明中使用双引号时)? [关闭]
【发布时间】:2016-02-27 08:03:27
【问题描述】:

这是我正在运行的代码:

RunWait("ComSpec & " /c Start 'D:\Program Files (x86)\Pidgin\pidgin.exe'")

我也试过不带半引号和带引号,但后来出现语法错误。

【问题讨论】:

  • 什么是“半引号”?
  • 你肯定有一个报价不匹配。有3个双引号和2个单引号。不清楚您打算使用什么字符串。

标签: autoit


【解决方案1】:

您的代码中的引号数量似乎存在问题。我会这样做:

(RunWait(@ComSpec & " /c Start" & "D:\Program Files (x86)\Pidgin\pidgin.exe")

【讨论】:

    【解决方案2】:

    根据Documentation - FAQ - Double quotes

    如果你想在字符串中使用双引号,那么你必须“加倍”。因此,对于您想要的每一个报价,您应该使用两个。 ...

    或者使用单引号代替...

    例子:

    RunWait(@ComSpec & " /c " & """D:\Program Files (x86)\Pidgin\pidgin.exe""")
    RunWait(@ComSpec & ' /c ' & '"D:\Program Files (x86)\Pidgin\pidgin.exe"')
    

    但是,不需要“指定的辅助命令解释器”(或@ComSpec),也不需要转义双引号。示例:

    Global Const $g_sFile = "D:\Program Files (x86)\Pidgin\pidgin.exe"
    
    Run($g_sFile, "")
    

    Related.

    【讨论】:

      【解决方案3】:

      你在中间有一个无与伦比的"

      通常 / 或 \ 用于转义。尝试 /" 或 \" 因为我不确定哪一个都适用于 AutoIt。

      【讨论】:

      • 它们都不能在 AutoIt 中工作。唯一的方法似乎是使用不同的字符串字符('")进行字符串连接
      • 可以通过双输入来转义(即MsgBox(0, "Test", "Hello, ""world""") 将输出 Hello, "world"
      【解决方案4】:

      在 AutoIt 中,您可以通过重复引号来转义引号(在 Batch/DOS 上发生的方式相同):

      RunWait(@ComSpec & " /c ""Start D:\Program Files (x86)\Pidgin\pidgin.exe""")
      

      【讨论】:

      • 是的,这可能是真正的答案。但是您可以添加参考(例如文档)来支持声明吗?
      【解决方案5】:

      问题是您计算机上的文件路径中有空格,需要用双引号括起来。

      在命令提示符下使用双引号尝试“D:\Program Files (x86)\Pidgin\pidgin.exe”,并确保程序启动。

      一旦你知道它有效,你就可以像这样将它添加到你的 AutoIt 代码中(注意它被单引号包围)。

      RunWait(@ComSpec & " /c " & '"D:\Program Files (x86)\Pidgin\pidgin.exe"')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        相关资源
        最近更新 更多