如何 运行 来自 ant exec 任务的多个命令

How to run multiple commands from ant exec task

我想 运行 来自 Ant exec 任务的两个 dos 命令。

我试过下面的代码

<exec dir="${testworkspace}${moduleName}" executable="cmd" failonerror="true" output="${testworkspace}${moduleName}\BuildConsole_TC${tc_num}.log" resultproperty="execrc">
                    <arg value="/c echo Download Status is ${DownloadStatus}"/>
                    <arg value="/c Load.bat ${moduleName} ${Intapp} ${CcvStatus}"/>
                </exec>

但它只执行第一个命令并跳过第二个。 我正在 windows OS.

上尝试这个

这应该有效。简单地链接命令。

<exec dir="${testworkspace}${moduleName}" executable="cmd" failonerror="true" output="${testworkspace}${moduleName}\BuildConsole_TC${tc_num}.log" resultproperty="execrc">
    <arg value="/c echo Download Status is ${DownloadStatus} &amp; Load.bat ${moduleName} ${Intapp} ${CcvStatus}"/>
</exec>

为什么您需要在单个 <exec> 任务中 运行 两个命令?相反,只需使用第二个 <exec> 任务。您可以将两者都包含在一个目标中:

 <target name="execute.this">
     <exec dir="${testworkspace}${moduleName}" 
         executable="cmd" failonerror="true" 
         output="${testworkspace}/${moduleName}/BuildConsole_TC${tc_num}.log" 
         resultproperty="execrc">
         <arg value="/c echo Download Status is ${DownloadStatus}"/>

     <exec dir="${testworkspace}${moduleName}" 
         executable="cmd" failonerror="true" 
         output="${testworkspace}/${moduleName}/BuildConsole_TC${tc_num}.log" 
         resultproperty="execrc">
         <arg value="/c Load.bat ${moduleName} ${Intapp} ${CcvStatus}"/>
     </exec>

或者更好的是,只需使用 <echo> 任务:

     <echo message="/c echo Download Status is ${DownloadStatus}"/>
     <exec dir="${testworkspace}${moduleName}" 
         executable="cmd" 
         failonerror="true" 
         output="${testworkspace}/${moduleName}/BuildConsole_TC${tc_num}.log" 
         resultproperty="execrc">
         <arg value="/c Load.bat ${moduleName} ${Intapp} ${CcvStatus}"/>
     </exec>

如果需要echo任务的输出在同一个文件中,可以在echo命令中使用file参数,append参数在 exec 任务中。