2010-09-22 9 views
12

मान लीजिए कि मैं विंडोज सर्वर पर फ़ाइल साझा करने के लिए नैन का उपयोग करके तैनाती को स्क्रिप्ट कर रहा था: \\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

कोशिश की और यह काम किया! मजेदार, मैंने नैन दस्तावेज़ों में इस वाक्यविन्यास को कभी नहीं देखा। – spoulson

+4

नेंट डॉक्स थोडा चूसना ... – D3vtr0n

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" />