मेरे पास दो पथ हैं:
fred \ frog
और
.. \ frag
मैं उनसे इस तरह PowerShell में एक साथ जोड़ सकते हैं:
join -पैथ 'फ्रैड \ फ्रॉग' '.. \ frag'
ये मुझे यह देता है:
fred \ frog \ .. \ frag
लेकिन मुझे यह नहीं चाहिए मुझे डबल डॉट्स के बिना सामान्यीकृत पथ चाहिए, जैसे:
fred \ frag
मैं यह कैसे कर सकता हूं?
आप pwd
, जॉइन-पथ
और [सिस्टम.IO.Path] :: GetFullPath
पूरी तरह योग्य विस्तारित पथ प्राप्त करने के लिए।
चूंकि सीडी
( Set-Location
) प्रक्रिया वर्तमान कार्यशील निर्देशिका को नहीं बदलती है, बस किसी रिश्तेदार फ़ाइल नाम को एक .net एपीआई में गुजर रहा है जो PowerShell संदर्भ को समझ में नहीं आता है, अनपेक्षित साइड-इफेक्ट्स हो सकता है, जैसे प्रारंभिक कार्यशील निर्देशिका के आधार पर पथ को हल करना ( आपका वर्तमान स्थान नहीं है)।
आप जो कर रहे हैं वह आप पहले अपने पथ को अर्हता प्राप्त कर सकते हैं:
जुड़ें-पथ (जॉइन-पथ (पीडब्ल्यूडी) फ्र्रेड \ फ्रॉग) '.. \ Frag '
यह उपज (मेरे वर्तमान स्थान को दिया गया है):
सी: \ विन्डोज \ system32 \ fred \ frog \ .. \ frag एक पूर्ण आधार के साथ, यह .NET API कॉल करने के लिए सुरक्षित है GetFullPa Th
:
[System.IO.Path] :: GetFullPath ((जॉइन-पथ (जॉइन-पथ (पीडब्ल्यूडी) फ्रैड \ फ्रॉग) '.. \ frag'))
जो आपको पूर्णतया योग्य पथ देता है और ..
निकाले गए हैं:
सी: \ विन्डोज \ system32 \ fred \ Frag
यह या तो व्यक्तिगत रूप से जटिल नहीं है, मैं इसके लिए बाह्य स्क्रिप्ट पर निर्भर समाधानों को अस्वीकार करता हूं, यह सरल समस्या को जॉइन-पथ
के द्वारा हल किया गया है और pwd
( GetFullPath
बस इसे सुंदर बनाने के लिए है) यदि आप केवल केवल रिश्तेदार भाग को रखना चाहते हैं, तो आप बस । सेबस्ट्रिंग ((पीडब्ल्यूडी)) जोड़ सकते हैं .Path.Trim ('\')। लंबाई + 1)
और वॉयला !
fred \ frag
UPDATE
डांडाफ को C: \
किनारे का मामला।
Comments
Post a Comment