2010-09-22 6 views
12

Angenommen, ich habe eine Bereitstellung unter Verwendung von nant auf einem Windows-Server für eine Dateifreigabe erstellt: \\server\share. Ich möchte, dass ein Skript alle Dateien von der Freigabe löscht und dann neue Dateien kopiert.Wie löscht man den Inhalt eines Verzeichnisses, aber nicht das Verzeichnis selbst?

Ich habe diesen Code, um die Dateien zu löschen, aber ich bekomme einen Fehler, dass es "\ server \ share" nicht löschen kann. Aber ich wollte die Freigabe nicht löschen, nur den Inhalt darin.

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

Ausgang:

 
BUILD FAILED 

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

Wenn ich es modifiziert, um stattdessen Inhalt eines Verzeichnisses in der Aktie zu löschen, sagen \\server\share\somedir, es wird ohne Fehler "somedir" löschen. Aber ich wollte das Verzeichnis nicht löschen, nur den Inhalt. Gibt es einen Weg?

Antwort

25

Dies funktioniert für mich - nein Problemumgehungen erforderlich:

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

Versucht dies und es hat funktioniert! Komisch, ich habe diese Syntax nie in den Dokumenten gesehen. – spoulson

+4

nant docs irgendwie saugen ... – D3vtr0n

2

Sie könnten ein "Exclude" -Tag einführen und eine Dummy-Datei ausschließen. Das wird den Stammordner intakt lassen.

Ich verwende die folgenden:

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

Cue Punkt von nsr81, ich in der Lage war, mit dieser Problemumgehung zu kommen, die für mich funktioniert:

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