Split-Path
Split-Path zerlegt einen Pfad in einzelne Bestandteile oder gibt gezielt einen bestimmten Bestandteil eines Pfades zurück.
Der Befehl kann beispielsweise verwendet werden, um aus einem vollständigen Dateipfad nur den Ordner, den Dateinamen oder den übergeordneten Pfad zu ermitteln.
Grundlagen
Syntax
Split-Path [-Path] <String[]> [-Qualifier] [-NoQualifier] [-Parent] [-Leaf] [-Resolve] [-Credential <PSCredential>]
Alternativ kann ein Pfad über -LiteralPath angegeben werden:
Split-Path [-LiteralPath] <String[]> [-Qualifier] [-NoQualifier] [-Parent] [-Leaf] [-Resolve] [-Credential <PSCredential>]
Der wichtigste Unterschied zwischen -Path und -LiteralPath besteht darin, dass -Path Wildcards interpretiert, während -LiteralPath den angegebenen Pfad exakt verwendet.
Beschreibung
Split-Path arbeitet ausschließlich mit der Struktur eines Pfades. Der Befehl greift dabei nicht grundsätzlich auf das Dateisystem zu.
Beispielsweise:
Split-Path "C:\Users\Jonny\Dokumente\Test.txt"
Ausgabe:
C:\Users\Jonny\Dokumente
Ohne weitere Angabe wird standardmäßig der übergeordnete Pfad zurückgegeben.
Je nach verwendeter Option kann Split-Path aber auch andere Bestandteile ermitteln:
| Option | Ergebnis |
|---|---|
| keine Option | Übergeordneter Pfad |
-Parent |
Übergeordneter Pfad |
-Leaf |
Letzter Bestandteil des Pfades |
-Qualifier |
Laufwerk bzw. Pfadqualifizierer |
-NoQualifier |
Pfad ohne Laufwerk bzw. Qualifizierer |
-Resolve |
Aufgelöster Pfad |
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
-Path |
String[] |
Gibt den zu zerlegenden Pfad an. Wildcards werden unterstützt. |
-LiteralPath |
String[] |
Gibt den Pfad exakt an. Wildcards werden nicht interpretiert. |
-Parent |
SwitchParameter |
Gibt den übergeordneten Bestandteil des Pfades zurück. |
-Leaf |
SwitchParameter |
Gibt den letzten Bestandteil des Pfades zurück. |
-Qualifier |
SwitchParameter |
Gibt den Qualifizierer des Pfades zurück, beispielsweise C:. |
-NoQualifier |
SwitchParameter |
Entfernt den Qualifizierer aus dem Pfad. |
-Resolve |
SwitchParameter |
Löst den Pfad auf und gibt den tatsächlichen Pfad zurück. |
-Credential |
PSCredential |
Gibt die Anmeldeinformationen an, die beim Auflösen des Pfades verwendet werden sollen. |
Bestandteile eines Pfades
Parent
-Parent gibt den übergeordneten Pfad zurück.
Split-Path "C:\Users\Jonny\Dokumente\Test.txt" -Parent
Ausgabe:
C:\Users\Jonny\Dokumente
Das entspricht auch dem Standardverhalten von Split-Path:
Split-Path "C:\Users\Jonny\Dokumente\Test.txt"
Leaf
-Leaf gibt den letzten Bestandteil des Pfades zurück.
Bei einem Dateipfad ist dies normalerweise der Dateiname.
Split-Path "C:\Users\Jonny\Dokumente\Test.txt" -Leaf
Ausgabe:
Test.txt
Bei einem Ordnerpfad wird entsprechend der letzte Ordner zurückgegeben:
Split-Path "C:\Users\Jonny\Dokumente" -Leaf
Ausgabe:
Dokumente
Qualifier
-Qualifier gibt den Qualifizierer eines Pfades zurück.
Bei einem lokalen Windows-Pfad ist dies normalerweise das Laufwerk:
Split-Path "C:\Users\Jonny\Dokumente\Test.txt" -Qualifier
Ausgabe:
C:
Bei anderen Pfadtypen kann der Qualifizierer entsprechend anders aussehen.
NoQualifier
-NoQualifier entfernt den Qualifizierer aus dem Pfad.
Split-Path "C:\Users\Jonny\Dokumente\Test.txt" -NoQualifier
Ausgabe:
\Users\Jonny\Dokumente\Test.txt
Damit kann beispielsweise ein Pfad ohne Laufwerksbuchstaben erzeugt werden.
Wildcards
Der Parameter -Path unterstützt Wildcards.
Beispielsweise:
Split-Path "C:\Users\Jonny\*.txt" -Leaf
Dabei wird *.txt als Wildcard interpretiert.
Soll der Pfad dagegen wörtlich behandelt werden, wird -LiteralPath verwendet:
Split-Path -LiteralPath "C:\Users\Jonny\*.txt" -Leaf
Hier wird *.txt nicht als Platzhalter interpretiert.
💡 Hinweis Der Unterschied zwischen
-Pathund-LiteralPathist besonders relevant, wenn ein Pfad Zeichen enthält, die PowerShell als Wildcards interpretiert.
Resolve
Mit -Resolve wird der angegebene Pfad aufgelöst.
Split-Path "C:\Users\Jonny\Dokumente\..\Test.txt" -Resolve
Dadurch kann beispielsweise ein Pfad mit relativen Bestandteilen wie .. auf seinen tatsächlichen Pfad reduziert werden.
-Resolve arbeitet dabei mit dem PowerShell-Provider-System und kann deshalb auch für andere Provider als das Dateisystem relevant sein.
Mehrere Pfade
Split-Path akzeptiert mehrere Pfade über -Path.
$paths = @(
"C:\Test\Datei1.txt"
"C:\Test\Datei2.txt"
"C:\Test\Datei3.txt"
)
Split-Path $paths -Leaf
Ausgabe:
Datei1.txt
Datei2.txt
Datei3.txt
Das ist besonders praktisch, wenn mehrere Pfade aus einer Pipeline oder einer Variablen verarbeitet werden sollen.
Verwendung mit der Pipeline
Split-Path kann Pfade auch über die Pipeline verarbeiten.
Get-ChildItem "C:\Test" | Split-Path -Parent
Da Get-ChildItem Objekte liefert, ist bei komplexeren Szenarien häufig die explizite Übergabe des Pfades sinnvoll:
Get-ChildItem "C:\Test" |
ForEach-Object {
Split-Path $_.FullName -Parent
}
Hier wird für jedes gefundene Objekt dessen vollständiger Pfad an Split-Path übergeben.
Typische Anwendungsfälle
Split-Path wird häufig verwendet, um:
- den Ordner einer Datei zu ermitteln
- den Dateinamen aus einem Pfad zu extrahieren
- den Laufwerksbuchstaben zu bestimmen
- Pfade ohne Laufwerksbuchstaben zu erzeugen
- Pfade vor der weiteren Verarbeitung zu zerlegen
- mehrere Pfade automatisiert zu verarbeiten
Ein typisches Beispiel ist das Ermitteln des Verzeichnisses einer Datei:
$file = "C:\Users\Jonny\Dokumente\Test.txt"
$directory = Split-Path $file -Parent
$directory
Ausgabe:
C:\Users\Jonny\Dokumente
Rückgabewert
Split-Path gibt einen oder mehrere Strings zurück.
Der genaue Inhalt hängt von der verwendeten Option ab.
| Option | Beispiel | Rückgabe |
|---|---|---|
-Parent |
C:\Test\Datei.txt |
C:\Test |
-Leaf |
C:\Test\Datei.txt |
Datei.txt |
-Qualifier |
C:\Test\Datei.txt |
C: |
-NoQualifier |
C:\Test\Datei.txt |
\Test\Datei.txt |
-Resolve |
auflösbarer Pfad | Aufgelöster Pfad |
Beispiele
Dateiname ermitteln
$path = "C:\Projekte\Projekt1\script.ps1"
Split-Path $path -Leaf
Ausgabe:
script.ps1
Verzeichnis ermitteln
Split-Path $path -Parent
Ausgabe:
C:\Projekte\Projekt1
Laufwerk ermitteln
Split-Path $path -Qualifier
Ausgabe:
C:
Pfad ohne Laufwerk
Split-Path $path -NoQualifier
Ausgabe:
\Projekte\Projekt1\script.ps1
Hinweise
Split-Pathzerlegt Pfade, anstatt Dateien oder Ordner zu verändern.- Ohne eine entsprechende Option wird standardmäßig der Parent-Pfad zurückgegeben.
-Leafeignet sich besonders zum Ermitteln eines Dateinamens.-Parenteignet sich zum Ermitteln des Verzeichnisses einer Datei.-Pathunterstützt Wildcards.-LiteralPathbehandelt den angegebenen Pfad wörtlich.- Mit
-Resolvekann ein Pfad tatsächlich aufgelöst werden. - Der Befehl arbeitet mit dem PowerShell-Provider-System und ist deshalb nicht ausschließlich auf das Dateisystem beschränkt.
Siehe auch
Join-PathResolve-PathConvert-PathGet-ItemGet-ChildItem