2008-10-10 10 views
48

डिफ़ॉल्ट रूप से, कमांड प्रॉम्प्ट से कॉपी करने से आपको उन फ़ाइलों को ओवरराइट करने के लिए संकेत मिलेगा जो पहले से ही लक्षित स्थान में मौजूद हैं।बैच फ़ाइल प्रति में "क्या आप ओवरराइट करना चाहते हैं" सभी को नहीं कहें?

आप "हां सभी" प्रतिस्थापन कहने के लिए "/ Y" जोड़ सकते हैं।

लेकिन आप कैसे कह सकते हैं "सभी को नहीं"?

दूसरे शब्दों में, मैं एक निर्देशिका से सबकुछ कॉपी करना चाहता हूं जो पहले से ही लक्ष्य में मौजूद नहीं है।

सबसे नज़दीकी चीज जो मैं देखता हूं वह एक्ससीओपीवाई तर्क है जो केवल विशिष्ट मॉड-डेटटाइम के बाद चीजों की प्रतिलिपि बनाता है।

उत्तर

65
: यदि आप एक जो ऐसा नहीं करता से सब कुछ कॉपी करना चाहते हैं पहले से ही बी में मौजूद हैं

जब तक कोई परिदृश्य नहीं है, जहां आप पिछली प्रतिलिपि के बाद से परिवर्तित स्रोत में मौजूदा फ़ाइलों की प्रतिलिपि बनाना चाहते हैं, तो तारीख निर्दिष्ट किए बिना XCOPY/D का उपयोग क्यों न करें?

5

मुझे उम्मीद है कि xxcopy के लिए option है।

बिंगो:

http://www.xxcopy.com/xxcopy27.htm#tag_231

2.3 By comparison with the file in destination 

    The switches in this group select files based on the 
    comparison between the files in the source and those in 
    the destination. They are often used for periodic backup 
    and directory synchronization purposes. These switches 
    were originally created as variations of directory backup. 
    They are also convenient for selecting files for deletion. 

2.3.1 by Presence/Absence 

    The /BB and /U switches are the two switches which select 
    files by the pure presence or absence as the criteria. 
    Other switches in the this group (Group 2.3) are also 
    affected by the file in the destination, but for a 
    particular characteristics for comparison's sake. 

    /BB Selects files that are present in source but not in destination. 
    /U Selects files that are present in both source and destination. 

-Adam

2

आकार और फ़ाइलों की संख्या पर निर्भर करता है प्रतिलिपि बनाई जा रही है, तो आप गंतव्य निर्देशिका स्रोत पर पहले के साथ "सभी के लिए नकल कर सकता है हाँ ", फिर मूल प्रतिलिपि करें जो आप कर रहे थे," हां टू ऑल "सेट के साथ भी। आपको वही परिणाम देना चाहिए।

+0

इससे गंतव्य में एक ही परिणाम मिलेगा, लेकिन स्रोत बदल जाएगा। – Liam

+0

सच है, वैसे भी आपकी व्याख्या बेहतर है, मैं इसे ऊपर उठाऊंगा;) – tloach

+0

स्वीट :) मुझे प्यार है जब अधिक सॉफ़्टवेयर इंस्टॉल किए बिना समस्याओं का हल किया जा सकता है :) – Liam

11

यहां एक कामकाज है। एक नया निर्देशिका सेल्सियस के लिए सी कॉपी बी करने के लिए एक

कॉपी, कुछ भी है कि ए के साथ ओवरलैप हो अधिलेखन कॉपी सी बी

को
+0

बस ... कमाल !! – ajax333221

+0

बहुत जटिल ... अभी भी मुझसे +1 है। – Jus12

6

मैं .NET विधानसभाओं कॉपी करने के लिए निम्नलिखित मानकों के साथ XCOPY का उपयोग करें:

/D /Y /R /H 

/D:m-d-y - Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time. 

/Y - Suppresses prompting to confirm you want to overwrite an existing destination file. 

/R - Overwrites read-only files. 

/H - Copies hidden and system files also. 
21

तब आप अपने आदेश चला "n" के एक भी लंबी लाइन के साथ एक पाठ फ़ाइल बना सकते हैं और बाद < nc.txt डाल यह। मैंने 145,000 से अधिक उदाहरणों की प्रतिलिपि बनाने के लिए ऐसा किया जहां "कोई ओवरराइट नहीं" था जो मैं चाहता था और यह इस तरह से ठीक काम करता था।

या आप केवल n कुंजी दबाए कुछ के साथ पकड़ कर सकते हैं, लेकिन उस में पाइप इसे करने के लिए < का उपयोग कर से अधिक समय लेता

+1

व्हाओ! lolfactor के लिए लगभग विनोदी – kurast

+10

+1। इसके अलावा +1 क्योंकि यह लीम के समाधान से अधिक कुशल है, जो कुछ +3 ... –

25
echo "No" | copy/-Y c:\source c:\Dest\ 
+1

अद्भुत है, यह सभी फाइलों के लिए काम करता है .. आप गूंजने के बजाय गूंज कर सकते हैं "नहीं"। echo एन | कॉपी/-Y * .txt df – barlop

+0

काम नहीं करता है (10, सेमीडी जीतें) न तो प्रतिलिपि के साथ xcopy – denispyr

+1

वास्तव में, आपको उद्धरणों से पूरी तरह से "प्रति-अनुपालन" होने से छुटकारा पाना होगा। अर्थात। यदि आप "नहीं" के लिए "हां" को प्रतिस्थापित करते हैं, तो यह अभी भी प्रतिलिपि नहीं करेगा। – Adam

4

इस ठीक

no | cp -rf c:\source c:\Dest\ 
+3

शायद मुझे यह निर्दिष्ट करना चाहिए कि मैं विंडोज का उपयोग कर रहा हूं। – JosephStyons

3

एन गूंज काम करता है। | कॉपी/-y $ (SolutionDir) SomeDir $ (OutDir)

+1

'गूंज वाई | $ (SolutionDir) कॉपी करें कुछ $ (आउटडिर) '-> यह मेरे लिए कॉपी किया गया है और ओवरराइट प्रॉम्प्ट के लिए उत्तर दिया गया है। –

3

इस प्रयास करें:

robocopy "source" "destination" /e /b /copyall /xo /it 

कॉपी कि नोटपैड में लाइन और एक .bat फ़ाइल के रूप में बचाने के लिए। फ़ाइल चलाएं और यह सब कुछ स्रोत से गंतव्य तक कॉपी करेगा। जब आप इसे फिर से चलाते हैं तो यह समान फ़ाइलों को प्रतिस्थापित नहीं करेगा।जब आप बदलते हैं या फ़ाइल बदलते हैं तो यह गंतव्य पर फ़ाइल को प्रतिस्थापित करेगा।

इसका परीक्षण करें। मैंने कुछ कार्यों के साथ एक .txt फ़ाइल बनाई, स्क्रिप्ट चलाई, .txt फ़ाइल पर शब्द बदल दिया और स्क्रिप्ट फिर से चलाया, यह केवल स्रोत से परिवर्तन फ़ाइल को प्रतिस्थापित करता है।

/e=Copies subdirectories. Note that this option includes empty directories 
/b=Copies files in Backup mode 
/copyall=Copies all file information 
/xo=Excludes older files. (this is what prevents it from copy the same file over and over) 
/it=Includes "tweaked" files. (this will allow the copy and replace of modified files) 
3

इसके लिए धन्यवाद। मैं अपने स्थानीय पीसी से ~ Azel ब्लॉब स्टोरेज में ~ 1 मिलियन फ़ाइलों को स्थानांतरित करने के लिए कमांड लाइन उपयोगिता AzCopy (v 3.1.0.93) का उपयोग कर रहा हूं। मेरे पास कुछ डुप्लिकेट हैं और प्रत्येक प्रॉम्प्ट का जवाब देने के लिए कॉपी को बेबीसिट नहीं कर सकते हैं और उसी फ़ाइल को दोबारा अपलोड नहीं करना चाहते हैं।

एज़कॉपी उपयोगिता पुष्टिकरण संकेतों को दबाने के लिए ए/वाई कमांड प्रदान करती है लेकिन इसे गंतव्य फ़ाइल को ओवरराइट करने के लिए कहती है। इस मार्ग पर जाकर मैं फ़ाइल को दोबारा अपलोड नहीं कर पाया। हालांकि, यह एक हैक की तरह प्रतीत होता है क्योंकि यह वास्तव में "नहीं" के साथ प्रॉम्प्ट का जवाब नहीं दे रहा है, इसके बजाय मुझे त्रुटि मिलती है "जब कोई उपयोगकर्ता कई विकल्पों में से कोई विकल्प चुनने की आवश्यकता होती है तो कोई इनपुट प्राप्त नहीं होता है।" लेकिन फ़ाइल अपलोड नहीं करता है।

यहां मैंने उपयोग किया गया आदेश है: echo n | AzCopy/स्रोत: "{file path}"/Dest: "{blob storage URL}"/DestKey: {key}

आशा है कि यह अगले व्यक्ति की सहायता करेगा।

+1

धन्यवाद! मैं दीवार के खिलाफ अपने सिर को टक्कर लगी हूं कि यह पता लगाने की कोशिश कर रहा हूं कि यह कैसे करें। आपको लगता है कि उपयोगिता प्रगति करेगी जहां सभी संदेशों को दबाने के बजाय ए/एन विकल्प दिया गया था (/ वाई), लेकिन यह काम अच्छी तरह से करता है।जैसा कि आपने बताया है, यह एक हैक का थोड़ा सा है क्योंकि यह कहता है कि "त्रुटि" है, लेकिन यह काम पूरा हो जाता है। – PicoDeGallo

0

हमने अपने पर्यावरण में बड़ी मात्रा में वीएम की प्रतिलिपि बनाने के लिए "invoc-command" के माध्यम से "robocopy" का उपयोग किया। हमने पाया है कि "रोबोकॉपी" अप्रत्याशित रूप से कभी-कभी निकलती है और पूरी प्रक्रिया नीचे जाती है। तो हमने "xcopy" का उपयोग करने का निर्णय लिया है। अब हम इसे काम कर रहे हैं और "बनाने के लिए" "सभी के लिए नहीं" विकल्प का उपयोग करने के लिए हम उस फ़ंक्शन (पावरहेल) का उपयोग करते हैं:

फ़ंक्शन gen_long_no ([string] $ path) { $ परिणाम = ""; Get-ChildItem $ path -Recurse | ? {अगर ($ _। PSIsContainer -eq $ false) {$ परिणाम + = "n"}}; वापसी $ परिणाम }

शायद किसी की सहायता करता है।

+0

हमारे परीक्षणों से पता चला है कि xcopy "invoke-command" के माध्यम से अच्छी तरह से काम करता है और बड़ी संख्या में वीएम की प्रतिलिपि बनाते समय त्रुटि के साथ बाहर नहीं निकलता है, बल्कि रोबोकॉपी। मैं वास्तव में सलाह देता हूं कि आप ऐसे परिचालनों के लिए रोबोकॉपी का उपयोग न करें। – blinker

+0

नोप लोग, invoke-command अपने गले में गलत लगता है। हाल ही में जब यह दूरस्थ xcopy कमांड निष्पादित किया गया था यह भी फांसी दी। ऐसा लगता है कि जब आप इसे चलाते हैं: किसी अन्य स्क्रिप्ट से invoke-command -computername bla-bla -scriptblock {xcopy src dst} , यह दूसरी स्क्रिप्ट तब भी लटका सकती है जब xcopy सफलतापूर्वक पूर्ण हो जाता है – blinker

5

मैं आप सभी जानते हैं लगता है/डी: तारीख तारीख सामान का उपयोग करने के लिए जा रहा है, लेकिन सिर्फ/डी के बिना: करता है वास्तव में क्या हम ऐसा चाहते हैं ...

xcopy {Source} {Destination} /E /D 

पिक उन लोगों के लिए अधिलेखन के बिना कॉपी करेंगे फाइलें जो नई हैं या शायद किसी कारण से पहले विफल रही हैं।

बस इसे आज़माएं, यह काम करता है।

+0

/d परिनियोजन स्क्रिप्ट में जीवनभर है, खासकर जब यह अपरिवर्तित डीएलएस के पुनर्वित्त को छोड़ देता है, जो आईआईएस में एक अनावश्यक ऐप पूल रीफ्रेश होता है। – JosephStyons