En développant la réponse de René Nyffenegger, pour ceux qui n'ont pas accès à PowerShell version 6.x, nous utilisons Split Path, qui ne teste pas l'existence de fichiers:
Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf
Cela renvoie " myfile.txt ". Si nous savons que le nom du fichier ne contient pas de points, nous pouvons diviser la chaîne et prendre la première partie:
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.') | Select -First 1
ou
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.')[0]
Cela renvoie " myfile ". Si le nom du fichier peut inclure des points, pour être sûr, nous pourrions utiliser ce qui suit:
$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)
Cela renvoie " myfile.txt.config ". Ici, je préfère utiliser Substring () au lieu de Replace () car l'extension précédée d'un point pourrait également faire partie du nom, comme dans mon exemple. En utilisant Substring, nous renvoyons le nom de fichier sans l'extension comme demandé.