Windows Ant exec-无法运行程序';启动';CreateProcess错误=2

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" />

我无法使用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" />  
        </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>