Справка командной строки Ant: iisvdir - PullRequest
0 голосов
/ 22 июня 2010

Я пытаюсь выполнить iisvdir из скрипта ant, чтобы очистить и создать виртуальный каталог, прежде чем скомпилировать свое приложение .net в Visual Studio. Я сталкиваюсь с парой странных ошибок: один сервер сборки, а другой без проблем запускает скрипт.

    <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 голосов
/ 02 июля 2010
  1. Является ли iisvdir.vbs там, где вы говорите?
  2. Чтобы CMD.EXE мог запустить команду, вам нужно использовать ключ / C.

Например:

cmd.exe echo Hello

... игнорирует параметры и запускает другую интерактивную командную строку как подоболочку.

cmd.exe /c echo Hello

... запускает оператор "echo Hello" и немедленно возвращается. Примечание: Вы можете использовать / K, если хотите, чтобы cmd.exe продолжал работать в интерактивном режиме после выполнения оператора (обычно это не очень хорошая идея в скрипте сборки).

Ваша команда:

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.

0 голосов
/ 02 июля 2010

Я не знаю, является ли это причиной ваших проблем, но я заметил, что вы используете одинарную кавычку (') для

...