在nant中,如何删除目录的内容,而不是目录本身?

时间:2010-09-22 14:33:55

标签: nant

假设我在Windows服务器上使用nant将部署脚本编写为文件共享:\\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 个答案:

答案 0 :(得分:25)

这对我有用 - 无需解决方法:

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

答案 1 :(得分:2)

您可以引入“exclude”标记并排除虚拟文件。这将使根文件夹完好无损。

我正在使用以下内容:

  <target name="clean">
    <delete>
      <fileset basedir="${DeployTo}">
        <include name="**/*" />
        <exclude name="**/aspnet_client/**" />
      </fileset>
    </delete>
  </target>

答案 2 :(得分:0)

从nsr81那里得到提示,我能够想出这个对我有用的解决方法:

<touch file="${DeployTo}/deleteme" />
<delete>
   <fileset basedir="${DeployTo}">
      <include name="**/**" />
      <exclude name="deleteme" />
   </fileset>
</delete>
<delete file="${DeployTo}/deleteme" />