Ich muss den Dateinamen und die Erweiterung aus zB my.file.xlsx extrahieren. Ich kenne den Namen der Datei oder Erweiterung nicht und der Name enthält möglicherweise mehr Punkte. Daher muss ich die Zeichenfolge von rechts durchsuchen und, wenn ich den ersten Punkt (oder den letzten von links) finde, den Teil auf der Seite extrahieren rechte Seite und der Teil auf der linken Seite von diesem Punkt.
Vielleicht gibt es eine bessere Lösung, aber ich habe hier oder anderswo nichts gefunden. Danke dir
.net
powershell
powershell-2.0
Culter
quelle
quelle
Antworten:
Wenn die Datei von der Festplatte kommt und wie von anderen angegeben, verwenden Sie die Eigenschaften
BaseName
undExtension
:Wenn Sie die Dateinamen als Teil der Zeichenfolge angegeben werden (etwa aus einer Textdatei kommt), würde ich die Verwendung
GetFileNameWithoutExtension
undGetExtension
statische Methoden aus der System.IO.Path Klasse:quelle
[System.IO.Path] | Get-Member -Static
[System.IO.Path]::GetExtension
die Erweiterung einschließlich des Punkts (".") Zurückgegeben wird .quelle
Wenn es sich um eine Textdatei handelt und eine vermutete Namensdatei von Leerzeichen umgeben ist, ist dies eine Möglichkeit:
Wenn es sich um eine Datei handelt, können Sie so etwas je nach Ihren Anforderungen verwenden:
quelle
quelle
Überprüfen Sie die Eigenschaften BaseName und Extension des FileInfo-Objekts.
quelle
Verwenden Sie den geteilten Pfad
quelle
Split(".")[-1]
damit es mit Dateien mit Punkten im NamenMach es einfach:
quelle
$file.Basename
Dies ist eine Anpassung, wenn jemand neugierig ist. Ich musste testen, ob RoboCopy eine Datei erfolgreich auf mehrere Server kopiert hat, um ihre Integrität zu gewährleisten:
Schön und einfach, und es zeigt das Verzeichnis und die Datei darin. Wenn Sie einen Dateinamen oder eine Dateierweiterung angeben möchten, ersetzen Sie einfach die * durch die gewünschten.
quelle
Hat ab PowerShell 6.0
Split-Path
einen-Extenstion
Parameter. Dies bedeutet, dass Sie Folgendes tun können:oder
Für
$path = "test.txt"
beide Versionen wird zurückgegeben.txt
, einschließlich des Punktes.quelle