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"
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.
Ant utilise XML, vous pouvez donc utiliser les entités XML normales comme "
:
tasklist /FI "IMAGENAME eq Java.exe" /FI "MEMUSAGE gt 50000"
Le script Ant est xml. Donc en xml, voici la règle.
Pour> utiliser >
Pour <utiliser <
Pour utilisation "
Pour utilisation &
Pour utilisation '
Remarquer! ";"
Référence:
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.
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.