मेरे पास कई फाइलें हैं जो इस तरह एक पैटर्न का पालन करती हैं:
<BaseName> . <Version> [ - <Tag> - <#> ] . <Extension>
उदाहरण के लिए:
basename.1.0.0.ext
basename.1.0.0-aaa-1.ext
basename.1.0.0-aaa-2.ext
basename.1.0.0-aaa-3.ext
basename.1.0.0-bbb-1.ext
basename.1.0.0-bbb-2.ext
basename.1.0.0-bbb-3.ext
अब मुझे एक सख्त लिखने की ज़रूरत है जो एक लक्ष्य फ़ोल्डर के एक निश्चित 'टैग' भाग (या कोई 'टैग') के साथ फ़ाइल को कॉपी करेगा। उदाहरण के लिए:
xcopy *-aaa-*.ext \\server\path /f /y
केवल 'आ' टैग वाली फाइलों की नकल करेगा। अब तक सब ठीक है।
समस्या मूल रूप से मैं सब कुछ है कि मेल खाता है की जरूरत है, स्क्रिप्ट भी कोई 'टैग' के साथ फ़ाइलों के लिए काम करने की जरूरत है *.ext
सिवाय क्या से मेल खाता है *-*.ext
।
दुर्भाग्य से, मेरे पास यहां कई प्रतिबंध हैं:
- मैं इन फ़ाइलों का नाम पैटर्न या स्थान बदलने में सक्षम नहीं हूं।
- 'संस्करण' भाग ज्ञात नहीं है, इसलिए
*.1.0.0.ext
काम नहीं करेगा। - 'संस्करण' एक निश्चित लंबाई नहीं है, इसलिए
*.?.?.?.ext
काम नहीं करेगा। xcopy
पैरामीटर को बाहर करना केवल एक पैटर्न को स्वीकार नहीं करता है, केवल फाइलों की एक सूची है, इसलिए यह काम नहीं करेगा।- मैं इसके लिए बैच स्क्रिप्टिंग का उपयोग कर रहा हूं। पॉवरशेल को शामिल करना पूरी तरह से सवाल से बाहर नहीं है, लेकिन इसे काम करने के लिए उचित मात्रा में ओवरहेड की आवश्यकता होगी, इसलिए यदि संभव हो तो मैं इससे बचना चाहूंगा।
वास्तविक स्क्रिप्ट को इस तरह देखना होगा:
xcopy "%SOURCE%" "%DEST%" /f /y
और इस स्क्रिप्ट द्वारा उपयोग किए गए चर बाहरी कॉन्फ़िगरेशन फ़ाइल में सहेजे जाएंगे।
मैं इस स्क्रिप्ट को कैसे लिख सकता हूं ताकि यह किसी विशिष्ट 'टैग' और बिना किसी 'टैग' के किसी भी फाइल के साथ काम करे?