Задача EXEC с '|' в аргументах - PullRequest
1 голос
/ 21 мая 2009

Я пытаюсь выполнить сборку VS с использованием incredibuild в моем сценарии ANT, но по какой-то причине задача exec завершается с ошибкой:

'Win32' не распознается как внутренняя или внешняя команда

когда я использую следующий код:

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

Я думаю, что сценарий муравья обрабатывает '|' как разделитель или что-то ...

Есть идеи, как мне заставить это работать?

Я тоже попробовал следующее, но ничто не приближает меня:

<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;" />

Ответы [ 3 ]

3 голосов
/ 21 мая 2009

Вам нужно экранировать символ трубы, поставив перед ним ^. Итак:

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

EDIT:

Вы уверены, что каретка не работает? Кажется, в этом примере файл муравья:

<?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>
1 голос
/ 21 мая 2009

Хм ... Я просто попробовал еще раз, и это сработало, но только после того, как я изменил на

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

поэтому я предполагаю, что кавычки вокруг Релиза ^ | Win32 не нужны, если я использую значение.

Спасибо большое!

0 голосов
/ 21 мая 2009

Я думаю, проблема в том, что командная строка Windows видит | и рассматривает это как "трубу" оператора. Возможно, выйдите из трубы, используя:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...