Ant命令行帮助:iisvdir

Ant命令行帮助:iisvdir,ant,wsh,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} "

我试图在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 dir="${SYSTEM32}" executable="cmd" failonerror="true">
        <arg line='cscript iisvdir.vbs /create "Default Web Site" ${RS_VIRTUAL_DIR} "${env.WORKSPACE}"'/>
    </exec>

有人能帮我找出可能的错误吗?

我不知道这是否是您的问题的原因,但我注意到您使用的是一个单独的报价 iisvdir.vbs在你说的地方吗? 要让CMD.EXE运行命令,需要使用/C开关。 例如:

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目录。

是的,iisvdir肯定在System32文件夹中。将/c作为参数混淆的问题正是正在发生的事情。我找不到一个解决办法来执行我需要的。有什么想法吗?这是一个64位操作系统,但我的默认jvm是32位。我还应该补充一点,我能够成功地调用cmd cscript iisvdir.vbs来/删除数据集,但是由于/c对cmd有意义,它阻塞了/create。是的,所以运行cmd/c cscript iisvdir.vbs/create等。当我第一次开始使用ant脚本时,我有很多命令需要在命令中使用双引号。我发现对于Ant脚本本身,单引号或双引号的行为都是相同的。当我需要在实际命令中使用双引号时,这允许我在脚本中使用单引号作为XML的一部分。问题在于让Ant正确运行它。令人沮丧的是,我在另一台构建机器上工作,我正试图在第二台机器上设置脚本,现在遇到了这个问题。Grr!
cmd.exe cscript iisvdir.vbs /create etc.
cmd.exe /c reat etc.