2010-09-22 158 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" /> 
相關問題