Mở rộng theo câu trả lời của René Nyffenegger, đối với những người không có quyền truy cập vào PowerShell phiên bản 6.x, chúng tôi sử dụng Đường dẫn tách, không kiểm tra sự tồn tại của tệp:
Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf
Điều này trả về " myfile.txt ". Nếu chúng ta biết rằng tên tệp không có dấu chấm trong đó, chúng ta có thể tách chuỗi và lấy phần đầu tiên:
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.') | Select -First 1
hoặc là
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.')[0]
Điều này trả về " myfile ". Nếu tên tệp có thể bao gồm các dấu chấm, để an toàn, chúng tôi có thể sử dụng như sau:
$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)
Điều này trả về " myfile.txt.config ". Ở đây tôi thích sử dụng Chuỗi con () thay vì Replace () vì phần mở rộng đứng trước dấu chấm cũng có thể là một phần của tên, như trong ví dụ của tôi. Bằng cách sử dụng Substring, chúng tôi trả về tên tệp mà không có phần mở rộng như được yêu cầu.