Как я могу избежать двойных кавычек в муравье? - PullRequest
28 голосов
/ 12 сентября 2011

Мне нужно выполнить следующую команду от ant, но я не могу понять, как избежать двойных кавычек:

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

Ответы [ 5 ]

60 голосов
/ 12 сентября 2011

Ant использует XML, поэтому вы можете использовать обычные объекты XML, такие как ":

tasklist /FI "IMAGENAME eq java.exe" /FI "MEMUSAGE gt 50000"
19 голосов
/ 24 декабря 2013

Ant-скрипт - это xml.Итак, в xml вот правило:

для> использования >

для <использования <code>&lt;

для «использования» &quot;

Для использования &amp;

Для использования &apos;

Внимание!";"

Ссылка:

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

19 голосов
/ 12 сентября 2011

Не думаю, что вы действительно это делаете, если используете <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> отправит его как один параметр в команду.Если для самой команды не требуются кавычки, это должно сработать.

7 голосов
/ 05 марта 2012

Но не работает, если вам нужно использовать команду find DOS в /CMD exec задании:

<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. В справке по функции поиска DOS говорится, что вам нужно использовать двойные кавычки для текста, который вы ищете.

3 голосов
/ 12 сентября 2011

Вот пример http://ant.apache.org/faq.html#shell-redirect-2. Просто используйте одинарные кавычки в качестве разделителя параметров XML. Таким образом, вы можете свободно использовать двойные кавычки внутри аргументов.

...