2009-05-21 11 views
1

J'essaie d'exécuter une construction VS en utilisant incredibuild dans mon script ANT, mais pour une raison quelconque la tâche exec échoue avec l'erreur suivante:Tâche EXEC avec '|' dans les arguments

'Win32' n'est pas reconnu comme une commande interne ou externe

lorsque j'utilise le code suivant:

<arg line='buildconsole solution.sln /rebuild /cfg="Release|Win32"' /> 

Je pense que le script fourmi peut être traiter le '|' comme un delimter ou quelque chose ...

Des idées comment je pourrais obtenir ce travail?

J'ai aussi essayé ce qui suit, mais rien ne me se rapproche:

<arg line='buildconsole solution.sln /rebuild /cfg="Release&#124;Win32"' /> 

<arg value="buildconsole solution.sln /rebuild /cfg=&quot;Release|Win32&quot;" /> 

<arg value="buildconsole solution.sln /rebuild /cfg=&quot;Release&#124;Win32&quot;" /> 

Répondre

1

Hmm ... Je viens d'essayer à nouveau et cela a fonctionné, mais seulement après avoir changé

<arg value="buildconsole solution.sln /rebuild /cfg=Release^|Win32" /> 

donc je suppose que les guillemets de presse^Win32 n'était pas nécessaire si j'utilise la valeur.

Merci beaucoup!

0

Je pense que le problème est que l'invite de commande Windows voit le | et le traite comme un opérateur "pipe". échapper peut-être le tuyau en utilisant:

< ligne arg = 'buildconsole solution.sln/reconstruction/cfg = "Release \ | Win32"'/>

3

Vous devez échapper le symbole de la conduite par ce qui précède avec^. Alors:

<arg line='buildconsole solution.sln /rebuild /cfg="Release^|Win32"' /> 

EDIT:

Êtes-vous que le caret ne fonctionne pas? Il semble dans ce fichier ant exemple:

<?xml version="1.0" encoding="UTF-8"?> 

<project name="Test" default="build" basedir="."> 

    <target name="build"> 
     <exec executable="cmd"> 
      <arg line="/k echo cfg=&quot;Release^|Win32&quot;"/> 
     </exec> 
    </target> 

</project>