रोबोकॉपी / निर्देशिका को अनदेखा कर रहा है


1

मैं हमारे मुख्य भंडार से बाहर सभी आवश्यक फ़ाइलों की प्रतिलिपि बनाकर क्लाइंट सॉफ़्टवेयर बिल्ड बनाने के लिए रोबोकॉपी का उपयोग करने की कोशिश कर रहा हूं। हमारे पास कई ग्राहक हैं जिनके पास अपने कस्टम सॉफ्टवेयर बिल्ड की जरूरत है।

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

स्पष्ट रूप से सामान का एक गुच्छा है जिसे मैं ग्राहक से अलग करना चाहता हूं जैसे कि स्रोत फ़ाइलें, लॉग फ़ाइलें और जाहिर है कि सभी ग्राहक विशिष्ट सामान। मैंने सोचा कि मैं इसका उपयोग करने में सक्षम हो जाऊं /xfऔर /xdस्विच का उपयोग करूं।

सभी आवश्यक जानकारी प्राप्त करने के बाद, निम्न कमांड बनाया गया है Lua:

robocopy "Z:\path\to\source" "../dest"  /e /xf *.cpp *.h *.hpp [[. . .]] *.cxx   /xd Data/Testing Data/Some/Client/Data Data/Other/Client/Data [[ . . .]] Data/More/Directories 

इसे चलाते समय मुझे निम्नलिखित आउटपुट मिलते हैं:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Tuesday, August 1, 2017 11:15:59 AM
   Source : Z:\path\to\source
     Dest : ../dest

    Files : *.*

Exc Files : *.cpp
        *.h
        *.hpp
        [[. . .]]
        *.cxx

 Exc Dirs : Data/Testing
        Data/Some/Client/Data
        Data/Other/Client/Data
        [[ . . .]]
        Data/More/Directories

  Options : *.* /S /E /DCOPY:DA /COPY:DAT /R:1000000 /W:30 

------------------------------------------------------------------------------

आउटपुट मुझे बताता है कि मेरी कमांड ठीक से स्वरूपित है और रोबोकॉपी समझती है कि मैं इसे करने के लिए क्या कह रहा हूं।

समस्या यह है कि यह सीधे Exc dirsसूची की अनदेखी कर रहा है और बस सब कुछ कॉपी कर रहा है। मैं पूरी Dataनिर्देशिका को बाहर नहीं करना चाहता , लेकिन इसके अंदर केवल बिट्स जो प्रासंगिक हैं।

अगर मैं वापस स्लैश ( \) का उपयोग करता हूं तो Exc dirsआउटपुट प्रिंट होता है Data\\testing। क्या यह मेरा मुद्दा हो सकता है?


क्या आपने निरपेक्ष रास्तों का उपयोग करने की कोशिश की? क्या आपने एक छोटा सा उदाहरण बनाने की कोशिश की कि आपको किस प्रकार के स्लैश की आवश्यकता है?
सेठ

मैं निरपेक्ष रास्तों से बचने की कोशिश कर रहा हूं क्योंकि स्क्रिप्ट को किसी भी मशीन पर चलाने में सक्षम होना चाहिए, कहीं भी रिपॉजिटरी के साथ। स्क्रिप्ट मुख्य रिपॉजिटरी का हिस्सा है, इसलिए हम रिश्तेदार रास्तों का उपयोग करते हैं। मैं स्लैश के सिद्धांत का परीक्षण करने के लिए अब एक छोटा सा उदाहरण बना रहा हूं।
गेट

यदि आप बहिष्कृत के पूर्ण स्पष्ट रास्तों का उपयोग नहीं करना चाहते हैं, तो काम को बाहर करने के लिए नौकरी को बताने के लिए केवल उप फ़ोल्डर नाम का उपयोग केवल कुछ शीर्ष स्तर के सबफ़ोल्डर नाम इत्यादि के लिए /XD "Testing Data" "More"करना चाहिए और वह काम करना चाहिए लेकिन उस नाम से मेल खाने वाले सभी सबफ़ोल्डर्स के लिए। "/z_Testing Data"उदाहरण के लिए, यदि नाम अद्वितीय रूप से कार्य के अनुसार अन्यथा अद्वितीय नहीं है, तो आपको उन वर्णों के नामकरण वाले फ़ोल्डर को पुनर्विचार करने की आवश्यकता हो सकती है जिन्हें आप बाहर करना चाहते हैं और उन्हें अद्वितीय बनाना चाहते हैं । अन्यथा, मानक शीर्ष स्तर के मूल फ़ोल्डर उदा में बैकअप नहीं करने के लिए dirs लगाने पर विचार करें \NoBackup\Testing Data। परीक्षण करने के लिए सरल।
दलाल रस आईटी

हमारी रिपॉजिटरी लगभग 20 साल पुरानी है। कुछ अधिक समझदार के लिए निर्देशिका लेआउट को बदलना तकनीकी जड़ता के कारण दुर्भाग्य से संभव नहीं है।
getack

मुझे वास्तव में नहीं मिलता है कि आप निरपेक्ष पथ का उपयोग क्यों नहीं कर पाएंगे। आपके मूल प्रश्न में कहा गया है कि आप LUA का उपयोग करके रोबोकॉपी लाइन तैयार कर रहे हैं और पहले से ही एक निरपेक्ष पथ को शामिल करते हैं। लेकिन ठीक है, ऐसा लगता है कि आपको एक जवाब मिल गया है जो आपके लिए काम करता है। दिलचस्प है कि आपका XCOPY दृष्टिकोण काम करता है क्योंकि इसमें समान व्यवहार होना चाहिए। हो सकता है कि आपने अपने उत्तर में जो किया हो, उसके पूर्ण उदाहरण को छोड़ दें, क्योंकि यह सहायक हो सकता है।
सेठ

जवाबों:


0

robocopyके प्रतिस्थापन के रूप में विज्ञापित किया गया है, xcopyलेकिन अगर मैं जो चाहता हूं, वह सरल नहीं है तो यह वास्तव में एक भयानक प्रतिस्थापन है।

/xdमैचों के बाद किसी भी निर्देशिका का नाम बाहर रखा गया है। यह समझ में आता है और यह विज्ञापित के रूप में कार्य करता है। ऐसा लगता है कि किसी भी समय आप इसे केवल एक निर्देशिका नाम से अधिक कुछ भी देते हैं तो यह बिस्तर को मिटा देता है। मेरी समस्या निश्चित रूप से इंटरनेट पर कुछ अन्य लोगों और उनकी परेशानियों को देखते हुए इतनी अनोखी नहीं है robocopy

मेरे पास निम्नलिखित निर्देशिकाएं हैं:

C:\repo\SomeProject\Data             <- DONT exclude this
C:\repo\SomeOtherProject\Data        <- DONT exclude this
C:\repo\AnotherProject\bar           <- DONT exclude this
C:\repo\Data\foo                     <- Exclude this
C:\repo\Data\bar                     <- Exclude this
C:\repo\Data\baz                     <- DONT exclude this
  • अगर मैं फोन robocopyके साथ /xd Dataतो C:\repo\SomeProject\Dataऔर C:\repo\SomeOtherProject\Dataभी बाहर रखा जाएगा
  • अगर मैं फोन robocopyके साथ /xd foo barतो C:\repo\AnotherProject\barभी बाहर रखा जाएगा।

मैं फोन करने के लिए सक्षम होना चाहते हैं robocopyके साथ /xd Data\foo Data\barइतना है कि केवल fooऔर barमें Dataबाहर रखा जाएगा।

पूर्ण फ़ाइल पथ काम नहीं करेगा क्योंकि कोड पोर्टेबल होना चाहिए और मैं वास्तव में मेरी> 100 सूची में शामिल प्रत्येक प्रविष्टि के लिए पूर्ण पथ इंजेक्ट नहीं करना चाहता। यह सिर्फ सही नहीं लगता है।

ऐसा प्रतीत होता है कि अगर मैं उपयोग करता हूं /xd Data\barतो रोबोकॉपी इसकी व्याख्या करता है, Data\\barजो इसे नहीं मिल सकता है। मुझे नहीं पता कि एक एकल \को क्यों बदला जाता है \\और किसी के भी क्रमपरिवर्तन से काम होता है \या /नहीं।

समाधान

तो अंततः मेरे प्रश्न का उत्तर उपयोग करना है xcopy। मैं इसे एक तरह के रूप में प्रविष्टियों युक्त सूची दे *.cpp, 8.vcxproj, \Data\foo\, \Data\bar\ एक 100 अन्य प्रविष्टियों और और यह सिर्फ ठीक सब सामान मैं जबकि सामान मैं जरूरत है रखने नहीं करना चाहते को छोड़कर काम करने लगता है।

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