2010-09-22 126 views
12

假设我正在使用Windows服务器上的nant对文件共享进行脚本部署:\\server\share。我想要一个脚本来删除共享中的所有文件,然后复制到新文件中。在内部,如何删除目录的内容,但不是目录本身?

我有这段代码来删除文件,但我收到一个错误,它不能删除“\ 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”没有错误。但是,我仍然不想删除目录,只是内容。有没有办法?

回答

25

这对我的作品 - 无所需变通办法:

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

试过这个,它的工作!有趣的是,我从来没有在nant文档中看到这种语法。 – spoulson 2010-10-14 13:28:48

+4

nant docs有点吸吮... – D3vtr0n 2011-06-29 20:50:06

2

您可以引入“排除”标签并排除虚拟文件。这会使根文件夹保持不变。

我使用了以下内容:

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

从nsr81以线索,我能想出这种解决方法为我的作品:

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