पॉवर्सशेल कॉपी-आइटम पुनरावर्ती रूप से लेकिन फ़ोल्डर नाम शामिल नहीं करता है


20

यह एक बेवकूफी भरा सवाल है, लेकिन मुझे नहीं पता कि यह काम क्यों नहीं कर रहा है।

मैं FolderA से FolderB तक फ़ाइलों की प्रतिलिपि बनाने की कोशिश कर रहा हूँ। मैं यह कर रहा हूँ:

Copy-Item -Path "C:\FolderA\" -Destination "C:\FolderB\" -recurse -Force -Verbose

यह महान काम करता है, कोई बात नहीं।

FolderB में परिणाम को छोड़कर यह है:

C:\FolderB\FolderA\file.txt

जबकि मैं यह होना चाहता हूँ:

C:\FolderB\file.txt

मुझे कौन सी बेवकूफी भरी बात याद आ रही है?


4
आप कुछ भी बेवकूफी नहीं कर रहे हैं, कॉपी-आइटम सिर्फ एक PITA है।
स्टिंगजैक

जवाबों:


28

आपका कमांड पॉवरशेल को फ़ोल्डर को कॉपी करने के लिए कह रहा है, इसकी सभी सामग्री के साथ, गंतव्य फ़ोल्डर में। केवल मूल फ़ोल्डर की सामग्री की प्रतिलिपि बनाने के लिए, अपना पथ निम्नानुसार बदलें:

Copy-Item -Path "C:\FolderA\*" -Destination "C:\FolderB\" -recurse -Force -Verbose

फ़ोल्डर नाम के बाद तारांकन चिह्न (*) देखें। यह फ़ोल्डर की सामग्री (सबफ़ोल्डर्स सहित) को कॉपी करेगा, लेकिन गंतव्य फ़ोल्डर के लिए फ़ोल्डर ही नहीं।

कॉपी-आइटम Cmdlet का उपयोग करना


2
ध्यान दें कि यह फ़ोल्डर संरचना की प्रतिलिपि नहीं बनाता है यदि गंतव्य फ़ोल्डर मौजूद नहीं है। इस समस्या से बचने के लिए कॉल करने से md "C:\FolderB"पहले Copy-Itemलगता है।
15:42 पर zett42

ऊपर @ zett42 की टिप्पणी का निर्माण, यदि गंतव्य फ़ोल्डर पहले से मौजूद नहीं है, तो ऐसा लगता है Copy-Itemकि यह फ़ोल्डर संरचना को पुन: पेश करेगा, लेकिन एक स्तर नीचे (उदाहरण के C:\FolderA\B\Cलिए कॉपी किया C:\FolderB\Cगया है C:\FolderB\B\C), और कई सबफ़ोल्डर मौजूद होने पर विफल भी हो सकते हैं। कॉपी-आइटम को कॉल करने से पहले हमेशा सुनिश्चित करें कि गंतव्य फ़ोल्डर मौजूद है। यह एक बग की तरह बदबू आ रही है (मैं कोई कारण नहीं देख सकता कि यह असंगत व्यवहार क्यों वांछनीय होगा)।
मार्क डर्डिन


0

आप का उपयोग कर सकते हैं -फ़ाइल-पुनर्प्राप्ति केवल प्रतिलिपि के लिए पुनरावर्ती फ़ाइलें:

कॉपी-आइटम -पाथ "C: \ Source" -Destination "C: \ Dest" -File -recurse -Force -Verbose

या उपयोग -Directory -Recurse केवल empy फ़ोल्डर संरचना की प्रतिलिपि बनाने के लिए:

कॉपी-आइटम -पाथ "C: \ Source" -Destination "C: \ Dest" -Directory -recurse -Force -Verbose

सधन्यवाद,

पॉल पेड्रोज़ा


-1
Copy-Item -Path "C:\FolderA" -Destination "C:\FolderB" -recurse -Force -Verbose

काम भी करेगा।


1
ऐसा प्रतीत होता है कि FastE ईथरनेट के समान उत्तर पर एक टिप्पणी है। यदि आप एक वैकल्पिक उत्तर प्रस्तावित करना चाहते हैं, तो आपको यह बताना चाहिए कि यह प्रश्न का उत्तर क्यों देता है।
ब्लैकवुड

अगर यह मौजूद नहीं है तो C: \ FolderB बनाता है - लेकिन C: \ FolderB \ FolderA बनाता है अगर C: \ FolderB मौजूद नहीं है। यदि आप उस कमांड को दो बार चलाते हैं तो आपको हर चीज की दो प्रतियां थोड़े अलग स्थानों पर मिल सकती हैं! बहुत ज्यादा दर्द।
लैमरथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.