2010-09-22 9 views
12

Supposons que je scriptais un déploiement à l'aide de nant sur un serveur Windows vers un partage de fichiers: \\server\share. Je veux un script nant pour supprimer tous les fichiers du partage puis copier dans de nouveaux fichiers.Dans nant, comment supprimer le contenu d'un répertoire, mais pas le répertoire lui-même?

J'ai ce code pour supprimer les fichiers, mais je reçois une erreur qu'il ne peut pas supprimer "\ server \ share". Mais je ne voulais pas supprimer le partage, juste le contenu de celui-ci.

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

Sortie:

 
BUILD FAILED 

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

Si je l'ai modifié pour supprimer au lieu contenu d'un répertoire de la part, dire \\server\share\somedir, il va supprimer « somedir » sans erreur. Mais encore, je ne voulais pas supprimer le dir, juste le contenu. Y a-t-il un moyen?

Répondre

25

Cela fonctionne pour moi - pas solutions de contournement requises:

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

Essayé cela et cela a fonctionné! C'est marrant, je n'ai jamais vu cette syntaxe dans les docs nant. – spoulson

+4

nant docs un peu sucer ... – D3vtr0n

2

Vous pouvez introduire une balise "exclude" et exclure un fichier fictif. Cela laissera le dossier racine intact.

J'utilise les éléments suivants:

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

Se inspirant de nsr81, j'ai pu trouver cette solution de contournement qui fonctionne pour moi:

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