web-dev-qa-db-fra.com

Comment puis-je échapper aux guillemets doubles dans ant?

J'ai besoin d'exécuter la commande suivante de ant, mais je ne sais pas comment échapper aux guillemets doubles:

tasklist /FI "IMAGENAME eq Java.exe" /FI "MEMUSAGE gt 50000"
29
sachin

Je ne crois pas que vous le fassiez vraiment si vous utilisez <arg value> et pas <arg line>:

liste des tâches/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>

Malgré les espaces, le <arg value> l'enverra en tant que paramètre unique à la commande. À moins que la commande elle-même ne nécessite des guillemets, cela devrait fonctionner.

19
David W.

Ant utilise XML, vous pouvez donc utiliser les entités XML normales comme &quot;:

tasklist /FI &quot;IMAGENAME eq Java.exe&quot; /FI &quot;MEMUSAGE gt 50000&quot;
61
Michael Mrozek

Le script Ant est xml. Donc en xml, voici la règle.

Pour> utiliser &gt;

Pour <utiliser &lt;

Pour utilisation &quot;

Pour utilisation &amp;

Pour utilisation &apos;

Remarquer! ";"

Référence:

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

19
user890054

Mais ne fonctionne pas si vous devez utiliser la commande find DOS dans un /CMD exec tâche:

<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>

donne,

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

C'est comme si ANT supprime les guillemets doubles autour du paramètre lorsqu'il est passé à l'interpereter CMD. L'aide de la fonction de recherche DOS indique que vous devez utiliser des guillemets doubles pour le texte que vous recherchez.

7
sqaopen

Voici un exemple http://ant.Apache.org/faq.html#Shell-redirect-2 . Utilisez simplement des guillemets simples comme séparateur de paramètres xml. De cette façon, vous pouvez utiliser librement des guillemets doubles dans les arguments.

3
Alexander Sulfrian