2012-02-07 14 views
5

को बाहर निकालें मैं निर्देशिका संरचना से फ़ाइलों को एक नए फ़ोल्डर में कॉपी करने के लिए देख रहा हूं। मैं फ़ाइल संरचना को संरक्षित नहीं कर रहा हूं, बस फाइलें प्राप्त करें। फ़ाइल संरचना ऐसी है कि नेस्टेड फ़ोल्डर्स हो सकते हैं, लेकिन 'पुरानी' नामक फ़ोल्डर में कुछ भी मैं हिलना नहीं चाहता हूं।निर्देशिका संरचना से फ़ाइलों की प्रतिलिपि बनाएँ लेकिन नामित फ़ोल्डर

मैंने इसमें कुछ प्रयास किए, लेकिन मेरे पावरहेल ज्ञान बहुत सीमित हैं।

उदाहरण जा रहा है जहां मौजूदा फ़ाइल संरचना मौजूद है:

Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"} 

यह मैं सभी फाइलों को मैं नहीं करना चाहती सहित सभी फाइलों को सब मैं चाहता हूँ, देता है। मैं 'पुरानी' फ़ोल्डर में मौजूद किसी भी फाइल को शामिल नहीं करना चाहता हूं। ध्यान दें: कई 'पुराने' फ़ोल्डर्स हैं। मैंने कोशिश की - बहिष्कृत करें, लेकिन ऐसा लगता है कि यह केवल फ़ाइल नाम से संबंधित है, और मुझे यकीन नहीं है कि फ़ाइलों को कॉपी करते समय, पथ नाम पर कैसे शामिल किया जाए।

कोई मदद?

उत्तर

6

इस बारे में कैसे:

C:\Example*" -include "*.txt -Recurse | 
    ?{$_.fullname -notmatch '\\old\\'}| 
    % {Copy-Item $_.fullname "C:\Destination\"} 

सब कुछ है कि बाहर करें '\ पुराने \' कहीं भी में यह पथ है।

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा हूं! – Feety

+0

सवाल थोड़ा अस्पष्ट था, और मैं यह नहीं बता सका कि "पुराने" फ़ोल्डर में सबफ़ोल्डर होंगे या नहीं। इसमें दोनों शामिल नहीं हैं। – mjolinor

+0

हां, यह संदिग्ध था, और मैं चाहता था कि 'पुराने' के उपफोल्डर्स को छोड़ दिया जाए। मुझे यह निर्दिष्ट करना चाहिए था। एक बार फिर धन्यवाद! – Feety

4

यदि हम पाइपलाइन में थोड़ा where-object छींकते हैं तो मुझे लगता है कि आप जो चाहते हैं उसे प्राप्त करेंगे। प्रत्येक ऑब्जेक्ट जिसमें Directory (System.IO.FileInfo) नाम की एक संपत्ति है, Name नाम की एक संपत्ति के साथ old के मान के साथ Copy-Item पर नहीं भेजा जाएगा।

Get-ChildItem -Path "C:\Example*" -include *.txt -Recurse | ? {-not ($_.Directory.Name -eq "old")} | % {Copy-Item $_.fullname "C:\Destination\"} 

(untested)

+0

धन्यवाद, यही वह है जिसे मैंने पूछा था। मैं निर्देशिका नाम तक पहुंचने के तरीके के बारे में स्पष्टीकरण की सराहना करता हूं। यह उपयोगी साबित होगा। धन्यवाद! – Feety

संबंधित मुद्दे

 संबंधित मुद्दे