以下ANT exec标记的行为与预期不符。
<exec executable="c:\scratch\test.cmd">
<arg value="A,B,C"/>
</exec>
执行时,我希望用一个参数调用text.cmd。但是,arg正在扩展为三个独立的论点。
根据手册,值应该将内容作为单个参数传递,但是,它将作为三个传递(一个用逗号分隔的字符串的每个组件)。
我尝试用分号(;)替换命令“,”,但这也不起作用。似乎arg的value属性解析提供的字符串就像它是一个路径一样,它不是。
任何人都知道如何将“A,B,C”作为一个参数传递?
为了完整起见,我的test.cmd文件是这样的:
@echo off
echo Arg1: %1
echo Arg2: %2
echo Arg3: %3
echo Arg4: %4
echo Arg5: %5
echo Arg6: %6
echo Arg7: %7
echo Arg8: %8
echo Arg9: %9
并且ant build的输出是:
[exec] Arg1: A
[exec] Arg2: B
[exec] Arg3: C
[exec] Arg4:
[exec] Arg5:
[exec] Arg6:
[exec] Arg7:
[exec] Arg8:
[exec] Arg9:
答案 0 :(得分:2)
问题已经解决。我非常关注蚂蚁这个问题,我没有花时间测试DOS命令行如何解释命令行参数。
从Window命令行,我运行test.cmd a,c,b并看到命令参数被拆分,因此,问题与ant无关。所以现在我只需要弄清楚如何强制ANT引用参数。
答案 1 :(得分:1)
尝试:
<exec executable="c:\scratch\test.cmd">
<arg line="A,B,C"/>
</exec>
有关arguments如何工作的说明,请参阅ant手册。