Ant命令行帮助:iisvdir

时间:2010-06-21 21:06:02

标签: ant wsh

在尝试在Visual Studio中编译.net应用程序之前,我正尝试从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 dir="${SYSTEM32}" executable="cmd" failonerror="true">
        <arg line='cscript iisvdir.vbs /create "Default Web Site" ${RS_VIRTUAL_DIR} "${env.WORKSPACE}"'/>
    </exec>

结果

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

有人可以帮我弄清楚可能出现的问题吗?

2 个答案:

答案 0 :(得分:0)

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

不确定这是否会有所帮助,但可以指出正确的方向。

答案 1 :(得分:0)

  1. 你说的是iisvdir.vbs吗?
  2. 要让CMD.EXE运行命令,您需要使用/ C开关。
  3. 例如:

    cmd.exe echo Hello
    

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

    cmd.exe /c echo Hello
    

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

    你的命令:

    cmd.exe cscript iisvdir.vbs /create etc.
    

    ...正在解析,好像你真的说过:

    cmd.exe /c reat etc.
    

    这是因为cmd.exe(与大多数MS命令行工具一样)具有奇怪的命令行解析功能。

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