Розгортаючись на відповідь Рене Ніфенеггера, для тих, хто не має доступу до PowerShell версії 6.x, ми використовуємо Split Path, який не перевіряє наявність файлу:
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 ". Тут я вважаю за краще використовувати Substring () замість Replace (), оскільки розширення, яке передує періоду, також може бути частиною назви, як у моєму прикладі. Використовуючи підрядку, ми повертаємо ім'я файлу без розширення, як вимагається.