René Nyffenegger'ın cevabını genişleterek, PowerShell sürüm 6.x'e erişimi olmayanlar için, dosya varlığını test etmeyen Split Path kullanıyoruz:
Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf
Bu, " dosyam.txt " dosyasını döndürür . Dosya adında nokta olmadığını bilirsek, dizeyi bölebilir ve ilk kısmı alabiliriz:
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.') | Select -First 1
veya
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.')[0]
Bu, " dosyam " ı döndürür . Dosya adı nokta içeriyorsa, emin olmak için aşağıdakileri kullanabiliriz:
$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)
Bu, " dosyam.txt.config " dosyasını döndürür . Burada Replace () yerine Substring () kullanmayı tercih ediyorum, çünkü bir noktadan önce gelen uzantı da benim örneğimde olduğu gibi adın bir parçası olabilir. Substring'i kullanarak, istendiği gibi dosya adını uzantı olmadan döndürürüz.