我已经浏览了论坛上的许多帖子,但无法整理。我正在尝试从ANT脚本运行一个BAT文件。文件夹层次结构如下
- Project
| - build.xml
| - build-C
| | - test.bat
我写的ANT文件是
<project name="MyProject" basedir=".">
<property name="buildC" value="${basedire}build-C" />
<exec dir="${buildC}" executable="cmd" os="Windows XP">
<arg line="/c test.bat"/>
</exec>
</project>
bat文件内容为
echo In Build-C Test.bat
上面说构建失败了..:我不知道我做错了什么?
<property name="buildC" value="${basedire}build-C" />
我想这应该是${basedir}
吧?使用
<echo>${buildC}</echo>
以确保目录正确。
不应该
<exec dir="${buildC}" executable="test.bat" os="Windows XP" />
做这份工作?
希望这将有助于扩展已经给出/接受的答案:
我建议使用批处理脚本作为参数执行cmd
:
<exec failonerror="true" executable="cmd" dir="${buildC}">
<arg line="/c "${buildC}/test.bat""/>
</exec>
由于指定了dir
,所以不确定是否有必要使用绝对路径"${buildC}/test.bat"
,但我只是以防万一。使用/c test.bat
可能就足够了。
我的项目在Windows操作系统上执行批处理脚本;所有其他脚本上的shell脚本。这里有一个例子:
<target name="foo">
<!-- properties for Windows OSes -->
<condition property="script.exec" value="cmd">
<os family="windows"/>
</condition>
<condition property="script.param" value="/c "${basedir}/foo.bat"">
<os family="windows"/>
</condition>
<!-- properties for non-Windows OSes -->
<property name="script.exec" value="sh"/>
<property name="script.param" value=""${basedir}/foo.sh""/>
<echo message="Executing command: ${script.exec} ${script.param}"/>
<exec failonerror="true" executable="${script.exec}" dir="${basedir}">
<arg line="${script.param}"/>
</exec>
</target>