假设我在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”而不会出错。但是,我仍然不想删除目录,只是内容。有办法吗?
答案 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" />