मुझे सभी *.doc
फ़ाइलों को कॉपी करने की आवश्यकता है (लेकिन फ़ोल्डर नहीं जिनके नाम *.doc
से मेल खाते हैं) नेटवर्क फ़ोल्डर \\server\source
(सभी नेस्टेड फ़ोल्डरों में फ़ाइलों सहित) को स्थानीय फ़ोल्डर C:\destination
पर नेस्टेड फ़ोल्डर्स पदानुक्रम को संरक्षित किए बिना (यानी सभी फ़ाइलों को सीधे जाना चाहिए C:\destination
और C:\destination
में कोई नेस्टेड फ़ोल्डर्स नहीं बनाया जाना चाहिए)। यदि \\server\source
के विभिन्न उपफोल्डरों से समान नाम वाली कई फाइलें हैं, तो केवल पहले को कॉपी किया जाना चाहिए और फिर कभी ओवरराइट नहीं किया जाना चाहिए - बाद में मिलने वाली सभी विवादित फ़ाइलों को छोड़ दिया जाना चाहिए (इस तरह के कई मामले हो सकते हैं, और छोड़ी गई फ़ाइलों को नेटवर्क पर trasferred नहीं है, अन्यथा इसमें बहुत अधिक समय लगेगा)। यहाँ PowerShell में इसे लागू करने के लिए अपने प्रयास है:कुछ फ़ाइलों की प्रतिलिपि कैसे करें (w/o फ़ोल्डर पदानुक्रम), लेकिन मौजूदा फ़ाइलों को ओवरराइट नहीं करते हैं?
cp \\server\source\* -Recurse -Include *.doc -Container:$false -Destination C:\destination
इस आदेश के साथ कम से कम दो समस्याएं हैं:
- यह प्रतियां फ़ोल्डरों जिनके नाम भी
*.doc
मेल खाते हैं। - विरोधाभासी नामों के मामले में बाद में मिली किसी भी फ़ाइल को नेटवर्क पर स्थानांतरित कर दिया गया है और पिछले एक को ओवरराइट किया गया है।
क्या आप सुझाव दे सकते हैं कि इन समस्याओं को कैसे ठीक किया जाए?
copy
, xcopy
, robocopy
, cscript
या *.bat
, *.cmd
का उपयोग करके कार्यान्वयन का भी स्वागत है।
स्थानीय ओएस विंडोज 8 और फ़ाइल सिस्टम एनटीएफएस है।
स्क्रिप्ट दो बार चलने पर अपेक्षित व्यवहार क्या है? क्या यह अभी भी सब कुछ एक बार कॉपी करना चाहिए? या यह कुछ भी कॉपी नहीं करना चाहिए? –
@splatteredbits गंतव्य निर्देशिका को प्रारंभ में खाली माना जा सकता है। यदि यह पूर्व शर्त विफल हो जाती है तो स्क्रिप्ट व्यवहार को अपरिभाषित किया जा सकता है। –