PowerShell letzten 4 Zeichen eines Strings weitergeben
Hallo Forum,
als PowerShell Newby bin ich mal wieder auf einen Wink mit Zaunpfahl von euch angewiesen. Ich lese aus einem Verzeichnis alle Unterverzeichnis aus, die nicht leer sind und bekomme eine Liste mit Namen. Den letzten Namen möchte ich weiterverarbeiten, finde aber den richtigen Befehl nicht. Bekannt ist, dass es ein Verzeichnisname mit 4 Zeichen ist und dieser immer am Ende der Liste steht
Habe bereits nach Substring, Split, Left, Right und ähnlichem gegoogled, aber nichts passendes gefunden:
$nonemptydir = get-childitem $sourcepath -Directory | ?{$_.Getfiles().Count -gt 0} Damit erstelle ich die Liste der Verzeichnisse, die nicht leer sind
$nonemptydir <Enter> Gibt dann folgendes Ergebnis
Dir1
Dir2
Dir3
Nun möchte ich "Dir3" in eine Variable $Name packen und dann weiterverarbeiten
Hat jemand einen Hinweis für mich, oder vielleicht sogar die komplette Syntax?
Danke im Voraus
Snoopy39
als PowerShell Newby bin ich mal wieder auf einen Wink mit Zaunpfahl von euch angewiesen. Ich lese aus einem Verzeichnis alle Unterverzeichnis aus, die nicht leer sind und bekomme eine Liste mit Namen. Den letzten Namen möchte ich weiterverarbeiten, finde aber den richtigen Befehl nicht. Bekannt ist, dass es ein Verzeichnisname mit 4 Zeichen ist und dieser immer am Ende der Liste steht
Habe bereits nach Substring, Split, Left, Right und ähnlichem gegoogled, aber nichts passendes gefunden:
$nonemptydir = get-childitem $sourcepath -Directory | ?{$_.Getfiles().Count -gt 0} Damit erstelle ich die Liste der Verzeichnisse, die nicht leer sind
$nonemptydir <Enter> Gibt dann folgendes Ergebnis
Dir1
Dir2
Dir3
Nun möchte ich "Dir3" in eine Variable $Name packen und dann weiterverarbeiten
Hat jemand einen Hinweis für mich, oder vielleicht sogar die komplette Syntax?
Danke im Voraus
Snoopy39
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 398914
Url: https://administrator.de/forum/powershell-letzten-4-zeichen-eines-strings-weitergeben-398914.html
Ausgedruckt am: 15.05.2025 um 19:05 Uhr
4 Kommentare
Neuester Kommentar
Sofern du davon ausgehen kannst das das gewünschte Verzeichnis immer an letzter Stelle von "$nonemptydir" steht:
Die meisten PowerShell Cmdlets geben bei mehreren Ergebnissen die einzelnen Objekte in ein Array verpackt aus - d.h. du musst nur das letzte Element des Arrays adressieren - in dieser Form:
(Der Code bedeutet soviel wie: Gib mir das letzte (minus) Objekt des Arrays aus)
PS: Les dich in das Thema Objektorientierung ein, denn das ist der Unterschied zwischen der alten cmd - wo alles ein string war - und der PS
Die meisten PowerShell Cmdlets geben bei mehreren Ergebnissen die einzelnen Objekte in ein Array verpackt aus - d.h. du musst nur das letzte Element des Arrays adressieren - in dieser Form:
$nonemptydir[-1]
PS: Les dich in das Thema Objektorientierung ein, denn das ist der Unterschied zwischen der alten cmd - wo alles ein string war - und der PS
Servus @snoopy39 ,
wenn du dir mal die Eigenschaften von einem Directory-Object anschaust wirst du die Eigenschaft Name finden, diese wiederum ist ja vom Typ String und ein String hat immer die Eigenschaft Length für dessen Länge. Wenn du das nun mit Substring kombinierst und von der Eigenschaft Length deine 4 abziehst kannst du die Funktion Substring problemlos nutzen
.
Möglichkeiten:
Alternative auch mit Regular Expressions (Regular Expressions Tutorial )
Grüße Uwe
wenn du dir mal die Eigenschaften von einem Directory-Object anschaust wirst du die Eigenschaft Name finden, diese wiederum ist ja vom Typ String und ein String hat immer die Eigenschaft Length für dessen Länge. Wenn du das nun mit Substring kombinierst und von der Eigenschaft Length deine 4 abziehst kannst du die Funktion Substring problemlos nutzen
Möglichkeiten:
get-childitem $sourcepath -Directory | ?{$_.Getfiles().Count -gt 0} | sort Name | select -Last 1 | ?{$_.Name.length -ge 4} | %{$_.Name.Substring($_.Name.length-4)}
get-childitem $sourcepath -Directory | ?{$_.Getfiles().Count -gt 0} | sort Name | select -Last 1 | ?{$_.Name -match '.{4}$'} | %{$matches}
Grüße Uwe