Ce que j'essaie de faire, est de trouver un fichier avec NAnt. Ce fichier pourrait être n'importe où dans une structure de répertoire d'un dossier donné.Nant: Trouver fichier par modèle
J'ai essayé de cela avec la tâche NAnt-foreach (cela fonctionne) mais je ne suis pas tout à fait convaincu de cela:
<target name="find-file">
<fail message="Property param.dir must be set" unless="${property::exists('param.dir')}" />
<fail message="Property param.pattern must be set" unless="${property::exists('param.pattern')}" />
<property name="return.file" value="" />
<foreach item="File" property="iterator.file">
<in>
<items>
<include name="${param.dir}\**\${param.pattern}" />
</items>
</in>
<do>
<property name="return.file" value="${iterator.file}" if="${string::get-length(return.file) == 0}" />
</do>
</foreach>
</target>
Est-ce qu'il ya quelqu'un au courant d'une meilleure approche? Sinon comment puis-je accomplir pour quitter la boucle foreach après que le premier élément a été trouvé?
La fonction contrib NAnt :: fileset à chaîne ne fonctionnera pas à moins qu'il y est un moyen de créer dynamiquement des ensembles de fichiers lors de l'exécution (I je ne connais pas les fichiers). Mon code va obtenir le premier fichier qui a été trouvé, mais ma question est de savoir comment terminer la boucle. – Dennis
Mis à jour avec l'exemple. Fonctionne parfaitement. Vous avez demandé un moyen de terminer la boucle plus tôt: je n'en ai jamais vu. Vous avez également demandé une meilleure approche. C'est discutable, que ce soit meilleur ou non - c'est certainement une alternative viable. – robaker
Si plus d'un fichier correspond, cela ne fonctionnera pas. – Wernight