В nant, как удалить содержимое каталога, но не сам каталог? - PullRequest
12 голосов
/ 22 сентября 2010

Предположим, я написал сценарий развертывания с использованием nant на сервере Windows для общего файлового ресурса: \\server\share. Я хочу, чтобы скрипт nant удалял все файлы из общего ресурса, а затем копировал в новые файлы.

У меня есть этот код для удаления файлов, но я получаю сообщение об ошибке, что он не может удалить "\ server \ share". Но я не хотел удалять общий ресурс, только содержимое в нем.

<delete>
   <fileset basedir="\\server\share">
      <include name="**/**" />
   </fileset>
</delete>

Выход:

BUILD FAILED

D:\code\xxx\xxx.deploy(177,8):
Cannot delete directory '\\server\share'.
    Access to the path '\\server\share' is denied.

Если я изменил его, чтобы вместо этого удалить содержимое каталога в общем ресурсе, скажем, \\server\share\somedir, он удалит somedir без ошибок. Но все же я не хотел удалять каталог, только его содержимое. Есть ли способ?

Ответы [ 3 ]

25 голосов
/ 14 октября 2010

Это работает для меня - обходных путей не требуется:

<delete>
    <fileset basedir="\\server\share">
        <include name="**\*" />
    </fileset>
</delete>
2 голосов
/ 22 сентября 2010

Вы можете ввести тег «исключить» и исключить фиктивный файл. Это оставит корневую папку без изменений.

Я использую следующее:

  <target name="clean">
    <delete>
      <fileset basedir="${DeployTo}">
        <include name="**/*" />
        <exclude name="**/aspnet_client/**" />
      </fileset>
    </delete>
  </target>
0 голосов
/ 22 сентября 2010

Получив сигнал от nsr81, я смог найти этот обходной путь, который мне подходит:

...