我想要运行一个蚂蚁宏;
<macrodef name="serviceTask">
<attribute name="server"/>
<attribute name="operation"/>
<attribute name="service"/>
<sequential>
<echo message="sc \\@{server} @{operation} @{service}"/>
<exec executable="sc.exe" failonerror="true">
<arg line="\\@{server} @{operation} @{service}"/>
</exec>
</sequential>
</macrodef>
<target name="startTomcat">
<echo message="Start Tomcat ${service} on ${server}"/>
<serviceTask server="MyServer" operation="start" service="Tomcat8180"/>
</target>
但是我收到了RPC错误:
startTomcat:
[echo] Start Tomcat Tomcat8180 on pacdcdtadeva02
[echo] sc \\pacdcdtadeva02 start Tomcat8180
[exec] [SC] OpenSCManager FAILED 1722:
[exec]
[exec] The RPC server is unavailable.
[exec]
stopTomcat:
[echo] Stop Tomcat Service Tomcat8180 on pacdcdtadeva02
[echo] sc \\pacdcdtadeva02 stop Tomcat8180
[exec] [SC] OpenSCManager FAILED 1722:
[exec]
[exec] The RPC server is unavailable.
[exec]
[echo] -------------------------------------------------------------------
[echo] --- Completed on 02/01/2011 05:11:42 PM
[echo] -------------------------------------------------------------------
现在我从命令行运行它,如
sc \\stage01 start Tomcat8180
服务开始/停止
C:\usr\svn_workspaces\xIVR\agent-ivr>sc \\stage01 start Tomcat8180
SERVICE_NAME: Tomcat8180
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x1
WAIT_HINT : 0xbb8
PID : 11228
FLAGS :
答案 0 :(得分:4)
也许这需要一个shell环境。如何尝试cmd /c sc ...
<exec executable="cmd.exe" failonerror="true">
<arg line="/c sc \\@{server} @{operation} @{service}"/>
</exec>
答案 1 :(得分:3)
这可能对您有所帮助,但我在Windows机器上使用ant的<exec>
任务也遇到问题,并结合<arg line=..>
语句。 Ant只是拒绝将参数行视为具有空格的单独实体,并且当它应该是有效的时,我得到了奇怪的错误,如“无法识别的参数”。
我为每个参数交换一个<arg line=>
和一个<arg value=...>
后,我的问题就消失了。
我也必须像Raghuram指定的那样做,并将所有东西都包装在shell环境中。
可能值得一试。