Um die Antwort von René Nyffenegger zu erweitern, verwenden wir für diejenigen, die keinen Zugriff auf PowerShell Version 6.x haben, den geteilten Pfad, der nicht auf die Existenz von Dateien testet:
Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf
Dies gibt " myfile.txt " zurück. Wenn wir wissen, dass der Dateiname keine Punkte enthält, können wir die Zeichenfolge teilen und den ersten Teil übernehmen:
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.') | Select -First 1
oder
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.')[0]
Dies gibt " myfile " zurück. Wenn der Dateiname aus Sicherheitsgründen Punkte enthalten könnte, könnten wir Folgendes verwenden:
$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)
Dies gibt " myfile.txt.config " zurück. Hier bevorzuge ich die Verwendung von Substring () anstelle von Replace (), da die Erweiterung, der ein Punkt vorangestellt ist, auch Teil des Namens sein kann, wie in meinem Beispiel. Bei Verwendung von Teilzeichenfolge geben wir den Dateinamen ohne die gewünschte Erweiterung zurück.