रेने न्यफेनेगर के जवाब पर विस्तार करते हुए, जिनके पास PowerShell संस्करण 6.x तक पहुंच नहीं है, हम स्प्लिट पाथ का उपयोग करते हैं, जो फ़ाइल अस्तित्व के लिए परीक्षण नहीं करता है:
Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf
यह " myfile.txt " देता है। यदि हम जानते हैं कि फ़ाइल नाम में अवधि नहीं है, तो हम स्ट्रिंग को विभाजित कर सकते हैं और पहला भाग ले सकते हैं:
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.') | Select -First 1
या
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.')[0]
यह " मायफाइल " देता है। यदि फ़ाइल नाम में समयावधि शामिल हो सकती है, तो सुरक्षित रहने के लिए, हम निम्नलिखित का उपयोग कर सकते हैं:
$FileName = Split-Path "C:\Folder\SubFolder\myfile.txt.config.txt" -Leaf
$Extension = $FileName.Split('.') | Select -Last 1
$FileNameWoExt = $FileName.Substring(0, $FileName.Length - $Extension.Length - 1)
यह " myfile.txt.config " देता है। यहां मैं प्रतिस्थापन () के बजाय सबस्ट्रिंग () का उपयोग करना पसंद करता हूं क्योंकि एक अवधि से पहले का विस्तार भी मेरे उदाहरण के अनुसार, नाम का हिस्सा हो सकता है। एस्ट्रिंग का उपयोग करके हम अनुरोध के अनुसार विस्तार के बिना फ़ाइल नाम वापस करते हैं।