我需要从ant执行以下命令,但我无法弄清楚如何转义双引号:
tasklist /FI "IMAGENAME eq java.exe" /FI "MEMUSAGE gt 50000"
答案 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;使用>
对于&lt;使用<
“使用"
For&amp;使用&
对于'使用'
注意! &#34 ;;&#34;
参考:
答案 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参数分隔符。这样你就可以在参数中自由使用双引号。