我如何逃避蚂蚁的双引号?

时间:2011-09-12 13:31:00

标签: ant exec

我需要从ant执行以下命令,但我无法弄清楚如何转义双引号:

tasklist /FI "IMAGENAME eq java.exe" /FI "MEMUSAGE gt 50000"

5 个答案:

答案 0 :(得分:59)

Ant使用XML,因此您可以使用常规XML实体,如"

tasklist /FI "IMAGENAME eq java.exe" /FI "MEMUSAGE gt 50000"

答案 1 :(得分:19)

如果你使用<arg value>而不是<arg line>,我不相信你真的这么做:

任务列表/ FI“IMAGENAME eq java.exe”/ FI“MEMUSAGE gt 50000”

<exec executable="tasklist">
    <arg value="/FI"/>
    <arg value="IMAGENAME eq java.exe"/>
    <arg value="/FI"/>
    <arg value="MEMUSAGE gt 50000"/>
</exec>

尽管有空格,<arg value>会将其作为单个参数发送给命令。除非命令本身需要引号,否则这应该有效。

答案 2 :(得分:18)

Ant脚本是xml。所以在xml中,这是规则。

对于&gt;使用&gt;

对于&lt;使用&lt;

“使用&quot;

For&amp;使用&amp;

对于'使用&apos;

注意! &#34 ;;&#34;

参考:

http://www.jguru.com/faq/view.jsp?EID=721755

答案 3 :(得分:7)

但如果您需要在find任务中使用/CMD exec DOS命令,则无法工作:

<target name="install" depends="install2">
    <exec executable="cmd.exe" outputproperty="result.process">
        <arg line='/c tasklist | find "httpd"'/>
    </exec>
    <echo message="RESULT: ${result.process}" />
</target>

给出,

install:
     [exec] Current OS is Windows 7
     [exec] Output redirected to property: result.process
     [exec] Executing 'cmd.exe' with arguments:
     [exec] '/c'
     [exec] 'tasklist'
     [exec] '|'
     [exec] 'find'
     [exec] 'httpd'
     [exec]
     [exec] The ' characters around the executable and arguments are
     [exec] not part of the command.
     [exec] Result: 2
     [echo] RESULT: FIND : format incorrect de paramètre

就像ANT在传递给CMD interpereter时删除参数周围的双引号一样。查找DOS函数的帮助说你需要对你正在寻找的文本使用双引号。

答案 4 :(得分:3)

以下是http://ant.apache.org/faq.html#shell-redirect-2示例。只需使用单引号作为xml参数分隔符。这样你就可以在参数中自由使用双引号。