Windows Ant exec-无法运行程序';启动';CreateProcess错误=2
我无法使用ant exec运行windows“启动”。Ant版本1.7.1 下面是重建问题的build.xml示例Windows Ant exec-无法运行程序';启动';CreateProcess错误=2,windows,ant,exec,Windows,Ant,Exec,我无法使用ant exec运行windows“启动”。Ant版本1.7.1 下面是重建问题的build.xml示例 <project name="test" basedir="." default="test-target"> <target name="test-target"> <exec executable="start"> <arg line="cmd /c notepad" />
<project name="test" basedir="." default="test-target">
<target name="test-target">
<exec executable="start">
<arg line="cmd /c notepad" />
</exec>
</target>
</project>
我的环境是WindowsXP,Ant1.7.1
我正在尝试从DOS提示符运行此命令。
我排除了任何与路径相关的问题,因为我可以从DOS promt手动运行“start cmd/c notepad”
有没有关于如何解决这个问题的建议
干杯
a s那
呢?还是开始,蝙蝠
另外,basedir=“.”
指向哪里?如果您将
放在
标签前面,它是否打印正确的文件夹(其中包含“启动”程序的文件夹)
此外,您可以在
之前添加
以查看所有可见属性。start不是可执行文件,而是cmd.exe shell的内部命令,因此要启动某些内容,您必须:
<exec executable="cmd.exe">
<arg line="/c start notepad" />
</exec>
编辑:
对于生成多个窗口,这应该可以工作:
<target name="spawnwindows">
<exec executable="cmd.exe" spawn="yes">
<arg line="/c start cmd.exe /k echo test1" />
</exec>
<exec executable="cmd.exe" spawn="yes">
<arg line="/c start cmd.exe /k echo test2" />
</exec>
</target>
但是您提到spawn=“true”不适用于您的环境,这是为什么?我的解决方案
<project name="test" basedir="." default="test-target">
<target name="start-init">
<exec executable="where" outputproperty="START">
<arg line="start" />
</exec>
</target>
<target name="test-target">
<exec executable="${START}">
<arg line="cmd /c notepad" />
</exec>
</target>
</project>
Additional Comments:我需要这个作为更大项目的一部分,在这个项目中,我需要以脚本方式启动多个应用服务器(应用服务器中的托管服务器)。该项目的build.xml由供应商提供,它相当复杂。我可以稍微编辑一下代码,但基本上编辑不了多少,因为它相当长、复杂,并且很难分析影响。使用“start”而不是“cmd”的目的是,当每个应用程序服务器启动时,它在单独的窗口/DOS提示符下启动,我们继续在主DOS提示符下工作。如果我使用“cmd”,我将无法实现它。类似地,如果我使用诸如vmlauncher=“true”之类的exec属性,它也可以工作,但当我运行多台服务器时,在成功启动第一台服务器之后,ant将无法从操作系统获得控制权并永远等待。或者,使用spawn=“true”也不适合我的问题需求。您好,谢谢。Pl阅读我的附加评论,Pl建议我是否可以使用cmd而不是start实现相同的功能(我的每个应用程序服务器启动都有附加dos提示/窗口)。谢谢。供应商的build.xml在exec语句中有输入、输出等,因此我不能使用spawn。
<project name="test" basedir="." default="test-target">
<target name="start-init">
<exec executable="where" outputproperty="START">
<arg line="start" />
</exec>
</target>
<target name="test-target">
<exec executable="${START}">
<arg line="cmd /c notepad" />
</exec>
</target>
</project>