बैच निर्देशिकाओं को पुनरावर्ती रूप से कॉपी करने के लिए फ़ाइल


121

वहाँ एक निर्देशिका के लिए पुनरावर्ती कॉपी करने का एक तरीका है .bat फ़ाइल के अंदर? यदि हां, तो एक उदाहरण बहुत अच्छा होगा। धन्यवाद।


2
आपका मतलब xcopy / s है? या अधिक उन्नत रोबोकॉपी?
नवीनीकरण

यह आपको मदद कर सकता है, हालांकि यह हटाता आप आसानी बजाय कॉपी करने के लिए बदल सकते हैं daniweb.com/web-development/threads/61479/...
जार्ज Chitiga

यह भी देखें superuser.com/questions/206036/...
anre

जवाबों:


176

में देखो xcopy , जो रिकर्सिवली फाइलों और उपनिर्देशिकाओं कॉपी कर देंगे।

पृष्ठ के नीचे 2/3 उदाहरण हैं। विशेष उपयोग है:

B ड्राइव करने के लिए ड्राइव A से सभी फ़ाइलों और उपनिर्देशिकाओं (किसी भी खाली उपनिर्देशिका सहित) को कॉपी करने के लिए टाइप करें:

xcopy a: b: /s /e


16
आप संभवतः / y ध्वज को भी शामिल करना चाहते हैं "यह पुष्टि करने के लिए कि आप मौजूदा गंतव्य फ़ाइल को अधिलेखित करना चाहते हैं, इसकी पुष्टि करने के लिए संकेत देता है।"
मैथ्यू लॉक

11
'xcopy' एक अच्छा विचार नहीं है क्योंकि वे अपर्याप्त स्मृति त्रुटि के लिए कुख्यात हैं । 'रोबोकॉपी' का उपयोग करने का प्रयास करें
राहुल

6
@ राहुल हम्म? मुझे लगता है कि कभी नहीं देखा है, लेकिन xcopy है निश्चित रूप से अंधकार युग के बाद से आसपास किया गया। आप शायद Copy-Item -Recurseइसके बजाय पावरशेल में भी कर सकते हैं।
एलसी।

1
दुर्भाग्य से हाँ, यह व्यवहार बहुत ही सामान्य है :)। यदि आप इसे बार-बार होते हुए देख रहे हैं, विशेष रूप से यदि आप डेटा की बड़ी मात्रा जैसे डेटा की प्रतिलिपि बनाना चाहते हैं।
राहुल

10
इसमें कहा गया है कि xcopy को हटा दिया गया है और उस robocopy का उपयोग किया जाना चाहिए।
माइक एचआर

71

स्वीकृत उत्तर की टिप्पणियों को पढ़ने के बाद, मैंने रोबोकॉपी कमांड की कोशिश की , जिसने मेरे लिए काम किया (विंडोज 7 64 बिट्स एसपी 1 से मानक कमांड प्रॉम्प्ट का उपयोग करके):

robocopy source_dir dest_dir /s /e

5
कभी नहीं पता था 'रोबोकॉपी' विंडोज 7 में एक इनबिल्ट कमांड है! उत्तर के लिए धन्यवाद, बहुत उपयोगी और शक्तिशाली :)
अनमोल सराफ

5
/Eमतलब नहीं है /S? copy subdirectories, including Empty ones.
mbomb007

4
हम्म /Sऔर /Eलगता है कि रोबोकॉपी /?मदद के अनुसार विपरीत चीजें हैं - एस "खाली नहीं हैं" ई "खाली वाले" हैं। मुझे लगता है कि आपको सिर्फ एक को चुनना चाहिए।
स्टुअर्ट ब्रॉक

1
अधिकांश उपयोगकर्ताओं के लिए, मुझे लगता है कि ऐसा करना पर्याप्त है / ई (खाली निर्देशिका शामिल करें)।
phsource

3
ध्यान दें कि robocopyयदि एक या एक से अधिक फ़ाइलों की सफलतापूर्वक प्रतिलिपि बनाई गई थी तो 1 का निकास कोड लौटाता है।
डॉउग्नोर्टन

15

आप बैच में एक पुनरावर्ती एल्गोरिदम लिख सकते हैं जो आपको हर नेस्टेड उपनिर्देशिका में आपके द्वारा किए गए सटीक नियंत्रण प्रदान करता है:

@echo off
call :treeProcess
goto :eof

:treeProcess
rem Do whatever you want here over the files of this subdir, for example:
copy *.* C:\dest\dir
for /D %%d in (*) do (
    cd %%d
    call :treeProcess
    cd ..
)
exit /b

विंडोज बैच फ़ाइल लूपिंग को प्रोसेस फाइलों में निर्देशिकाओं के माध्यम से?


4
महान विचार है, लेकिन क्या आपका कार्यक्रम फ़ोल्डर पदानुक्रम को संरक्षित किए बिना स्रोत निर्देशिका से सभी फ़ाइलों को एकल गंतव्य निर्देशिका में कॉपी नहीं करता है?
जीन-फ्रेंकोइस टी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.