कमांड निर्देशिका लाइन कमांड को पूरी निर्देशिका (निर्देशिका फ़ोल्डर सहित) को किसी अन्य निर्देशिका में कॉपी करने के लिए


68

कमांड लाइन का उपयोग करते हुए, मैं एक निर्देशिका को दूसरे में कॉपी करना चाहूंगा। उदाहरण के लिए डायरेक्टरी C:/testऔर है C:/test2

मैं कॉपी करना चाहते हैं C:/testमें C:/test2इतना है कि परिणाम होगाC:/test2/test

सब कुछ मैंने पाया अब तक केवल फ़ाइलों और फ़ोल्डरों में निहित की प्रतिलिपि बनाएगा C:/testमें C:/test2है, लेकिन मूल निर्देशिका बाहर छोड़ देता है।


1
xcopy

जवाबों:


50

स्विच के XCOPYसाथ प्रयोग करके देखें /E। अधिक जानकारी यहाँ

मुझे वर्षों में अपने मस्तिष्क से इस जानकारी का उपयोग नहीं करना पड़ा है !

अपडेट करें

प्रलेखन कहना है कि यह प्रतियां स्रोत निर्देशिका से सभी फाइलों और उपनिर्देशिकाओं (जिसका अर्थ है कि मूल निर्देशिका नहीं बनाई गई है), तो आप बनाना होगा testमें C:\test2पहले और उसके बाद का उपयोग XCOPY


2
Xcopy पर '/ T' स्विच बिना किसी फाइल के डायरेक्टरी और सबडायरेक्ट स्ट्रक्चर कॉपी करेगा।
mfg

2
robocopy /CREATE /COPYALL /DCOPY:T src dstकेवल फ़ोल्डर और खाली फ़ाइलों को कॉपी करने के लिए बेहतर उपयोग लेकिन सभी टाइमस्टैम्प और अन्य विशेषताओं को संरक्षित करें।
user1016274

2
यह वास्तव में प्रश्न के लिए उत्तर प्रदान नहीं करता है क्योंकि फ़ोल्डर testअभी भी नीस बनाया जा सकता है।
IGRACH

3
@IGRACH मैंने सोचा md testऔर फिर उपयोग करना xcopyबहुत ही स्पष्ट था।
vivin

1
अच्छी तरह से सवाल copyफ़ोल्डर के बारे में है नया फ़ोल्डर नहीं बना रहा है और फिर उसमें कॉपी कॉपी करता है।
IGRACH

35
xcopy c:\test c:\test2\test /s /e /h

यहाँ XCOPY [ 1 , 2 ] पर जानकारी दी गई है


2
मुझे "डी" इनपुट करने के लिए कैसे रोकें?
युयुम्यम

2
@YumYumYum: आप / I स्विच का उपयोग कर सकते हैं: "/ I यदि गंतव्य मौजूद नहीं है और एक से अधिक फ़ाइल की प्रतिलिपि बनाता है, तो मानता है कि गंतव्य एक निर्देशिका होना चाहिए।"
थिस्स तिजमा

18

यदि आप बैकअप स्क्रिप्ट बना रहे हैं तो ROBOCOPY का उपयोग करें। xcopy को हटा दिया गया है और संभवतः निकट भविष्य में उपयोग से बाहर कर दिया जाएगा। रोबोकॉपी सब कुछ कर सकती है xcopy कर सकते हैं। यह अधिक लचीला और विश्वसनीय भी है। रोबोकॉपी के साथ स्क्रिप्ट बनाना भविष्य में उन्हें प्रूफ करेगा।


  1. फ़ोल्डरों को आसानी से कॉपी करने के लिए रोबोकॉपी का उपयोग करें। रोबोकॉपी कमांड xcopy कमांड की जगह लेती है। यह सामग्री को परिभाषित करने के बारे में चिंता किए बिना जल्दी से पूरे फ़ोल्डरों को कॉपी कर सकता है। उदाहरण के लिए, C: \ Tools निर्देशिका की सभी सामग्री को नए फ़ोल्डर D: \ backup \ Tools में कॉपी करने के लिए, निम्नलिखित दर्ज करें:

    robocopy C:\tools D:\backup\tools /e
    

    / ई संशोधक सभी उपनिर्देशिकाओं को शामिल करने के लिए रोबोकॉपी बताता है। इसमें खाली फ़ोल्डर शामिल हैं। रॉबोकॉपी स्वचालित रूप से छिपी हुई और सिस्टम फ़ाइलों की प्रतिलिपि बनाएगी। यदि वे लक्ष्य स्थान पर मौजूद नहीं हैं तो यह नई निर्देशिकाएँ बनाएगा।

  2. एक निर्देशिका का आइना। बैकअप बनाने के लिए डायरेक्टरी मिरर करना बहुत अच्छा है। रोबोकॉपी का दर्पण विकल्प स्रोत से गंतव्य तक सभी सामग्रियों को कॉपी करेगा। यह तब गंतव्य पर मौजूद कुछ भी हटा देगा जो स्रोत पर मौजूद नहीं है। यह सुनिश्चित करता है कि आपके बैकअप में केवल आपकी फ़ाइलों के नवीनतम संस्करण हैं। उदाहरण के लिए, C: \ Users \ My Documents को D: \ backup \ My Documents को मिरर करने के लिए, निम्नलिखित दर्ज करें: [४]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    यह फ़ंक्शन मूल फ़ाइलों की सभी अनुमतियों को संरक्षित करेगा।

  3. पुनरारंभ करना सक्षम करें। यदि आप कनेक्शन को मध्य-प्रतिलिपि से अलग किया जाता है तो आप प्रक्रिया को पुनः आरंभ करने की क्षमता को शामिल करना चाह सकते हैं।

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. कॉपी करने की प्रक्रिया में प्रवेश करें। robocopy आपको लॉग फाइल बनाने की अनुमति देता है। यह आपको समस्याओं को इंगित करने या प्रतिलिपि बनाई गई का एक संग्रह उत्पन्न करने में मदद कर सकता है।

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    / Log + संशोधक मौजूदा लॉग फ़ाइल को अधिलेखित करने के बजाय जोड़ देगा। यदि आप पुरानी लॉग फ़ाइल को अधिलेखित करना पसंद करते हैं, तो /log:.txt का उपयोग करें।


8

मैं एक्सकोपी पर रोबोकॉपी की सलाह देता हूं , क्योंकि इसमें बहुत अधिक विकल्प हैं, जिसमें टाइमस्टैम्प को बरकरार रखना शामिल है, जो मुझे आवश्यक लगता है।

रोबोकॉपी को XP / 2003 में जोड़ा जाना चाहिए, लेकिन यह विस्टा की ओर से मानक है।

मैं वास्तव में आमतौर पर xxcopy का उपयोग करता हूं , लेकिन 64-बिट संस्करण मुक्त नहीं है।


1
robocopyएक विंडोज प्रोग्राम है। सवाल डॉस के बारे में था।
ग्रेविट

9
@ ग्रैविटी: वास्तव में 16-बिट डॉस का उपयोग करने की संभावना उसके द्वारा सीएमडी को 'डॉस' कहने की उच्च संभावना की तुलना में बहुत कम है, जैसा कि वास्तविक दुनिया में आम है।
8

असली सवाल यह है: एक Microsoft प्रोग्राम है?
knocte

@knocte हाँ यह है
yossico

5
XCOPY SourceDrive: DestinationDrive: /S /E

उदाहरण के लिए, यदि आपको कमांड लाइन के माध्यम से या एक्सबूट कमांड वातावरण से E:ड्राइव डेटा H:(बाहरी हार्ड ड्राइव) को कॉपी करने की आवश्यकता है।

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E

2
/ E मौजूद होने पर / S की आवश्यकता नहीं है। windows-commandline.com/copy-directory-command-line
गिरी

3

यदि मूल प्रश्न वह है जो मैं तब तक एक उत्तर की तलाश में रहा हूं, और जाहिर है, कोई भी ऊपर, एक स्पष्ट समाधान के साथ नहीं आया है।

मैं जिस चीज की तलाश कर रहा हूं, उसे परीक्षण निर्देशिका में परीक्षण निर्देशिका में फिर से टाइप किए बिना कॉपी करना है। कुछ इस तरह

xcopy /isvy c:\test d:\test2

जहां d:\test2\testकॉपी से पहले मौजूद नहीं है, लेकिन बाद में करता है। यह गंतव्य पथ में दूसरी बार मिस-टाइपिंग परीक्षण पर बचाएगा। उपरोक्त कमांड सभी फाइलों और किसी भी निर्देशिका को test2 में कॉपी करेगा लेकिन परीक्षण निर्देशिका नहीं बनाएगा।

अब तक

xcopy /isvy c:\test d:\test2\test

वास्तव में एकमात्र तरीका है जो मैंने इस काम को करने के लिए पाया है। यदि आपके पास टाइपिंग की समस्या है, तो कोई गारंटी नहीं है कि स्रोत और गंतव्य निर्देशिकाओं का मिलान होगा।

इसे ठीक करने का एक विकल्प है

set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%

यह गंतव्य निर्देशिका को mydirचर में सेट करता है और फिर स्रोत और गंतव्य पथ दोनों में उस चर का उपयोग करता है। यदि आप चर गलत टाइप करते हैं तो आपको या तो एक त्रुटि मिलेगी या गंतव्य निर्देशिका संभवतः %शुरुआत और अंत में होगी।

यह टाइप करने के लिए लंबा है लेकिन गलत नाम पाने की संभावना कम है। वे ध्यान देने योग्य होंगे।


यह वास्तव xcopy /ievy c:\test d:\test2\testमें निर्देशिका ट्री संरचना को रखने के लिए है, और set mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%केवल 1 & में पर्याप्त होगा, क्योंकि मूल्य निर्धारित करने का परिणाम हमेशा सफल होता है।
नेटवॉस्ट्रेशन

0
xcopy SWITCHES SOURCE DESTINATION

कहां SWITCHESहो सकते हैं:

  • संपूर्ण निर्देशिका संरचना की प्रतिलिपि बनाने के लिए:

    /hiev

  • गंतव्य में फ़ाइलों को अधिलेखित करने के लिए (यदि गंतव्य फ़ोल्डर पहले से मौजूद है):

    /hievry

  • अधिलेखित करने और ACL + गुण के साथ कॉपी करने के लिए:

    /hievxok

आपके मामले के लिए सबसे उपयुक्त:

xcopy /hievry C:\test C:\test2\test


0

मेरे पास एक ऐसी ही स्थिति थी जहां मुझे फ़ोल्डर के नाम सहित कई फ़ोल्डर को एक गंतव्य स्थान पर कॉपी करने की आवश्यकता थी, और आशा है कि यह प्रश्न चिह्नित उत्तर मदद करेगा, लेकिन यह वास्तव में नहीं करता है।

सबसे पहले, निश्चित रूप से ऐसे अवसर हैं जहां किसी को इस क्षमता की आवश्यकता होगी और मुझे एक में भागना पड़ा जब मुझे C: \ Windows \ विधानसभा \ GAC_MSIL से फ़ोल्डर्स कॉपी करना था। विंडोज एक्सप्लोरर इस फ़ोल्डर को दिखाने से इनकार करता है, इसलिए आपको कमांड प्रॉम्प्ट का उपयोग करना होगा।

यदि आप GAC फ़ोल्डर से परिचित हैं, तो आपको पता होगा कि गलत होने पर फ़ोल्डर के नाम गैर-तुच्छ और आसान हैं।

इसलिए पहले से निर्देशिका बनाना वास्तव में एक विकल्प नहीं है - जब तक आप एक स्क्रिप्ट का उपयोग नहीं करते हैं - जिसे मैंने उपयोग करना समाप्त कर दिया है, क्योंकि यह एकमात्र वास्तविक समाधान था।

पहले उन फ़ोल्डरों को डंप करें जिन्हें आप एक अस्थायी फ़ाइल में कॉपी करना चाहते हैं, यह आमतौर पर कुछ पैटर्न पर आधारित होता है

dir /B policy* > Folders.txt

फिर डंप में प्रविष्टियों पर लूप करें और गंतव्य पर कॉपी करें। यदि आप बैकस्लैश (\) के साथ गंतव्य तर्क समाप्त करते हैं तो Xcopy एक फ़ोल्डर बनाने का ध्यान रखेगा

for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\

इन दोनों कमांड को बैच फ़ाइल में रखें और चलाएं।

अब अगर केवल xcopy या robocopy ने इसे बनाया है।


0

XCOPY सोर्सड्राइव: डेस्टिनेशनड्राइव: / S / E


सुपर उपयोगकर्ता में आपका स्वागत है! क्या आप इसे समझा सकते हैं? (विशेष रूप से /S /Eझंडे)
बर्टिब

0

मैं आपके प्रश्न के लिए एक कार्यात्मक वैकल्पिक उत्तर आया हूं।

सबसे पहले, पैरामीटर का उपयोग करते FORFILESहुए /S, यह पुष्टि करता है कि हर उप-निर्देशिका C:\testतक पहुंचा जाएगा।

दूसरे, /Cपैरामीटर के साथ , देशी चर के साथ आदेशों की एक श्रृंखला शुरू करना संभव है, जो गंतव्य पर पहचान निर्देशिका बनाने के लिए संभव बनाता है, और दो सशर्त संरचनाओं का उपयोग करके फ़ाइलों को उनके अंदर कॉपी करें।

पहली सशर्त संरचना @isdir==TRUE(बड़े अक्षरों का उपयोग करना सुनिश्चित करें), निर्देशिकाओं को केवल स्रोत से प्राप्त करने की अनुमति देता है, फिर उन्हें MKDIR [path]\@relpathअंत में भाग्य के साथ बनाता है ।

अंत में, दूसरा यह सुनिश्चित करता है कि यह केवल फाइलों के साथ काम कर रहा है @isdir==FALSE, और फिर COPY कमांड को बस काम मिलता है, सभी फाइलों को फोर्फ़िस कमांड तक पहुंचते हुए, [path]@relpathगंतव्य के रूप में सेट करते हुए, बस बनाई गई निर्देशिकाओं के अंदर फ़ाइलों को कॉपी करने के लिए।

forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"

आशा है कि यहाँ आसपास हर किसी की मदद करता है।


-2

ऐसा जीयूआई से होगा, पता नहीं वे इसे कैसे करते हैं।

"... छोटा कार्यक्रम आपको" निर्देशिका से "और" निर्देशिका में "का चयन करने की अनुमति देगा, और यह केवल निर्देशिका संरचना को कॉपी करने के लिए आगे बढ़ेगा।"

http://www.rjlsoftware.com/software/utility/treecopy/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.