如何使用来自单个Ant exec任务

时间:2016-12-14 16:05:13

标签: ant

在Windows上,我试图在一个exec()任务中执行后面需要参数的两个命令(.cmd和.exe)。这是为了避免使用两个shell,但是只执行第一个命令。

以下是Ant片段

        <exec executable="cmd" dir="C:\PROGRA~1\IBM\IIB\10.0.0.7\server\bin\">
            <arg value="/c mqsiprofile.cmd &amp; C:\PROGRA~1\IBM\IIB\10.0.0.7\server\bin\mqsideploy.exe" />
            <arg value="IIBNODE1" />
            <arg value="-e" />
            <arg value="default" />
            <arg value="-a" />
            <arg value="${bar.name}" />
        </exec>

我也在没有&amp; amp的情况下运行它并用“Program Files”替换“PROGRA~1”,仍然是同样的问题。请建议。

1 个答案:

答案 0 :(得分:0)

您可以将两者都包含在一个目标中:

<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参数和exec任务中的append参数。 / p>

参考:How to run multiple commands from ant exec task