ant
  • wsh
  • 2010-06-21 137 views 0 likes 
    0

    我试图在Visual Studio中编译我的.net应用程序之前,从ant脚本执行iisvdir以清理并创建一个虚拟目录。我遇到了一个构建服务器的奇怪错误,但另一个运行脚本没有任何问题。Ant命令行帮助:iisvdir

    <exec dir="${SYSTEM32}" executable="cscript" failonerror="true"> 
         <arg line='iisvdir.vbs /create "Default Web Site" ${RS_VIRTUAL_DIR} "${env.WORKSPACE}"'/> 
        </exec> 
    

    结果:

     [exec] Microsoft (R) Windows Script Host Version 5.6 
        [exec] Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. 
        [exec] 
        [exec] Input Error: Can not find script file "c:\windows\system32\iisvdir.vbs". 
    

    然后在

    [exec] 'reate' is not recognized as an internal or external command, 
    [exec] operable program or batch file. 
    

    <exec dir="${SYSTEM32}" executable="cmd" failonerror="true"> 
         <arg line='cscript iisvdir.vbs /create "Default Web Site" ${RS_VIRTUAL_DIR} "${env.WORKSPACE}"'/> 
        </exec> 
    

    结果有人可以帮我找出什么可能是错了吗?

    回答

    0
    1. 是Iisvdir.vbs将在那里你说这是什么?
    2. 要获得CMD.EXE运行一个命令,您需要使用/ C开关。

    例如:

    cmd.exe echo Hello 
    

    ...忽略的参数,并运行另一个交互式命令提示符作为一个子shell。

    cmd.exe /c echo Hello 
    

    ...运行“echo hello”语句并立即返回。注意:如果希望cmd.exe在运行语句后继续以交互方式运行(通常不是构建脚本中的好主意),则可以使用/ K。

    你的命令:

    cmd.exe /c reat etc. 
    

    这是因为cmd.exe的有(与大多数MS命令行工具:

    cmd.exe cscript iisvdir.vbs /create etc. 
    

    ,如果你真想说......是越来越解析)怪异的命令行解析。

    更新:这是一个64位的操作系统吗?如果Ant是一个32位的任务,那么它实际上(无声)在C:\Windows\SysWOW64寻找cscript.exe和iisvdir.vbs。他们在吗?如果没有,你应该使用C:\Windows\SysNative。在32位任务中,这是别名到真正的C:\Windows\System32目录。

    +0

    是的,iisvdir肯定是在system32文件夹中。/c被混淆为一个参数的问题正是发生了什么。而且我无法找到解决方法来执行我需要的操作。有什么想法吗? – galuvian 2010-07-09 15:30:25

    +0

    这是一个64位操作系统,但我的默认jvm是32位。我还应该补充说,我能够成功地调用“cmd cscript iisvdir.vbs”来删除数据集,但是由于/ c对cmd有些意义,它会扼杀/创建数据集。 – galuvian 2010-07-09 20:36:11

    +0

    是的,所以运行'cmd/c cscript iisvdir.vbs /创建等...' – 2010-07-10 12:10:35

    0

    我不知道这是你的问题的原因,但我注意到你使用单引号(')为< arg line ='。我看过的所有例子都使用双引号(“)我知道你用双引号括住空格的项目,所以可能有必要将它们转义出来?也许将代码移动到批处理文件中,可以在运行之前通过测试蚂蚁?

    不知道这是否会帮助,但能指出你在正确的方向。

    +0

    当我第一次开始使用我的ant脚本时,我有很多需要在命令中使用双引号的命令。我发现对于Ant脚本本身,单引号或双引号的行为方式都是相同的。当我需要在实际命令中使用双引号时,这允许我在脚本中使用单引号作为XML的一部分。 – galuvian 2010-07-09 15:32:11

    +0

    在命令行上运行iisvdir命令工作得很好。问题在于让Ant正确运行它。令人沮丧的是,我已经在另一台生成机器上工作了,并且我试图在第二台机器上设置我的脚本,现在遇到了这个问题。儿! – galuvian 2010-07-09 15:33:14

    相关问题