windows - विंडोज़ पथ को कैसे परिवर्तित करें: यूआरएल, एक बैच फ़ाइल में, एसवीएन कमांड लाइन उपयोग के लिए उपयुक्त



batch-file svn (1)

Windows- आधारित एसवीएन स्थापना (CollabNet सबवर्सन एज का उपयोग करके) में, मेरे पास एक पोस्ट-कट हुक बैच फ़ाइल है जहां मैं एक रिपॉज़िटरी फ़ोल्डर नाम का निर्माण करता हूं, और मुझे svnsync को एक file: साथ कॉल svnsync file: उस विंडोज फ़ोल्डर की ओर इशारा करते हुए URL।

प्रश्न अब है: मैं एक विंडोज़ फ़ोल्डर या फाइल नाम को एक file: कैसे रूपांतरित कर सकता हूँ file: यूआरएल, इस तरह से कि यूआरएल एसवीएन कमांड लाइन टूल के लिए कम से कम स्वीकार्य है?


एक बैच फ़ाइल में, यदि चर FILE_OR_FOLDER_NAME में (पूर्ण या रिश्तेदार, स्थानीय या UNC, रिक्त स्थान के साथ या बिना, वर्तमान या मौजूदा नहीं) Windows फ़ाइल या निर्देशिका का नाम है, तो निम्न कमांड इसी file: FILE_URL : URL FILE_URL चर में:

for /f "delims=" %%R in ("%FILE_OR_FOLDER_NAME%") do set FILE_URL=%%~fR%
set FILE_URL=file:///%FILE_URL%
set FILE_URL=%FILE_URL:///\\=//%
set FILE_URL=%FILE_URL:\=/%

रेखा 1 एक रिश्तेदार फ़ाइल का नाम एक पूर्ण करने के लिए फैलता है; लाइन 2 file:/// prepends file:/// ; लाइन 3 एक यूएनसी पथ का विशेष मामला संभालता है; और पंक्ति 4 सुनिश्चित करता है कि हम केवल आगे स्लैश का उपयोग करते हैं

एक साथ लिया, ये ट्रांसफ़ॉर्म \\remotehost\share\folder to file://remotehost/share/folder , और d:\folder to file:///d:/folder

जहां तक ​​मेरा परीक्षण चला जाता है, तब तक उपरोक्त आदेश हमेशा एक file: एक एसवीएन कमांड लाइन के लिए स्वीकार्य यूआरएल, और संभवत: अन्य उपयोगों के लिए भी।

केवल एक चीज जो वास्तव में सही नहीं है, वह यह है कि रिक्त स्थान और अन्य विशेष वर्ण जैसे # को ठीक से यूआरएल-एन्कोडेड file: URL: D:/my test#repo file:///D:/my test#repo बनती file:///D:/my test#repo , जो तकनीकी तौर पर सही नहीं है। हालांकि, मेरे विशेष उपयोग के मामले में यह कोई समस्या नहीं है, क्योंकि एसवीएन कमांड लाइन पार्सर रिपॉजिटरी पर ध्यान दिए बिना।





file-uri