আপনি একটি সমন্বয় ব্যবহার করতে পারেন pwd
, Join-Path
এবং [System.IO.Path]::GetFullPath
একটি সম্পূর্ণরূপে যোগ্যতাসম্পন্ন প্রসারিত পথ পেতে।
যেহেতু cd
( Set-Location
) প্রক্রিয়াটির বর্তমান কার্যনির্বাহী ডিরেক্টরিটি পরিবর্তন করে না, কেবল পাওয়ারশেল প্রসঙ্গটি বোঝে না এমন একটি নেট নেট এপিআই-তে একটি সম্পর্কিত আপেক্ষিক ফাইলের নাম পাস করার ফলে অনিচ্ছাকৃত পার্শ্ব-প্রতিক্রিয়া থাকতে পারে, যেমন প্রাথমিক কাজ বন্ধের ভিত্তিতে কোনও পথে সমাধান করা as ডিরেক্টরি (আপনার বর্তমান অবস্থান নয়)।
আপনি যা করেন তা হ'ল আপনি প্রথমে আপনার পথটিকে যোগ্য করে তোলেন:
Join-Path (Join-Path (pwd) fred\frog) '..\frag'
এই ফলন (আমার বর্তমান অবস্থান দেওয়া):
C:\WINDOWS\system32\fred\frog\..\frag
একটি নিখুঁত বেস সহ, .NET এপিআই কল করা নিরাপদ GetFullPath
:
[System.IO.Path]::GetFullPath((Join-Path (Join-Path (pwd) fred\frog) '..\frag'))
যা আপনাকে পুরোপুরি যোগ্য পথ এবং ..
সরানো সহ:
C:\WINDOWS\system32\fred\frag
এটি জটিলভাবে হয় না, ব্যক্তিগতভাবে, আমি এর জন্য বাহ্যিক স্ক্রিপ্টগুলির উপর নির্ভরশীল সমাধানগুলি উপেক্ষা করি, এটি সাধারণ সমস্যাটি বরং যথাযথভাবে সমাধান করা হয়েছে Join-Path
এবং pwd
( GetFullPath
কেবল এটি সুন্দর করার জন্য)। আপনি যদি কেবলমাত্র আপেক্ষিক অংশ রাখতে চান তবে আপনি কেবল যোগ করুন .Substring((pwd).Path.Trim('\').Length + 1)
এবং ভয়েলা!
fred\frag
হালনাগাদ
C:\
প্রান্তের কেসটি নির্দেশ করার জন্য @ ডাংফকে ধন্যবাদ জানাই ।