执行'|'的EXEC任务在论点中

时间:2009-05-21 18:30:37

标签: ant

我正在尝试在我的ANT脚本中使用incredibuild执行VS构建,但由于某种原因,exec任务失败并出现以下错误:

'Win32'未被识别为内部或外部命令

当我使用以下代码时:

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

我认为ant脚本可能正在处理'|'作为分隔符或其他东西...

我有什么想法可以让它发挥作用吗?

我也尝试了以下内容,但没有什么能让我更接近:

<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 个答案:

答案 0 :(得分:3)

您需要通过前面的^来转义管道符号。所以:

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

编辑:

你确定插入符不起作用吗?它似乎在这个示例ant文件中:

<?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 :(得分:1)

嗯......我刚试了一遍,但是有效,但只有在我改为

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

所以我想如果我使用值,则不需要在Release ^ | Win32周围引用。

非常感谢!

答案 2 :(得分:0)

我认为问题是Windows命令提示符会看到|并将其视为“管道”操作员。也许通过使用:

来逃避管道

&lt; arg line ='buildconsole solution.sln / rebuild / cfg =“Release \ | Win32”'/&gt;