Bin-Pfad Ende ausschneiden
ich habe per cmd/ batch einen Pfad ausgelesen. Bsp.: C:\Programme\tools\application.exe
nun möchte ich bei mehreen Diensten die exe-Datei aus dem ausgelesenen Pfad ausschneiden, um sie in einer Variablen zu nutzen. Also das nur noch "application.exe" übrig bleibt.
Die Pfade sind unterschiedlich lang. Ich weiß, dass es ein Kommando gibt, womit man die den letzten Teil eines Pfades ausschneiden kann. dieser fällt mir aber aktuell nicht ein.
nun möchte ich bei mehreen Diensten die exe-Datei aus dem ausgelesenen Pfad ausschneiden, um sie in einer Variablen zu nutzen. Also das nur noch "application.exe" übrig bleibt.
Die Pfade sind unterschiedlich lang. Ich weiß, dass es ein Kommando gibt, womit man die den letzten Teil eines Pfades ausschneiden kann. dieser fällt mir aber aktuell nicht ein.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 417667
Url: https://administrator.de/forum/bin-pfad-ende-ausschneiden-417667.html
Ausgedruckt am: 06.04.2025 um 22:04 Uhr
14 Kommentare
Neuester Kommentar
Moin,
in einem batch ist das so einfach nicht. Hier findest Du zwei Lösungsansätze:
https://stackoverflow.com/questions/1707058/how-to-split-a-string-by-spa ...
https://stackoverflow.com/questions/34524390/regex-to-match-a-variable-i ...
Ich würde da die Powershell bevorzugen, da das viel einfacher ist:
Oder, wenn Du mehrere im selben Verzeichnis hast:
hth
Erik
in einem batch ist das so einfach nicht. Hier findest Du zwei Lösungsansätze:
https://stackoverflow.com/questions/1707058/how-to-split-a-string-by-spa ...
https://stackoverflow.com/questions/34524390/regex-to-match-a-variable-i ...
Ich würde da die Powershell bevorzugen, da das viel einfacher ist:
split-path C:\Programme\tools\application.exe -leaf
Oder, wenn Du mehrere im selben Verzeichnis hast:
split-path C:\Programme\tools\*.exe -leaf -resolve
hth
Erik
Moin,
Na das ist ja mit der PS ganz einfach:
und am Ende, falls das notwendig ist
hth
Erik
Zitat von @MarciMarc85:
Es soll also überprüft werden, welche Dienste mit dem Namen TOOL* ( die Dienste beginnen alle mit TOOL gefolgt von einem "-" oder einem Leerzeichen und dem Teil der Anwendnung) . Beispiel "TOOL-Auswertung" oder "TOOL Verarbeitung" im Status "Running" sind und diese sollen dann beendet werden. Dabei soll die Taskliste abgefragt werden und so lange warten, bis die exe-Datei hinter dem Dienst ordnungsgemäß beendet ist
Es soll also überprüft werden, welche Dienste mit dem Namen TOOL* ( die Dienste beginnen alle mit TOOL gefolgt von einem "-" oder einem Leerzeichen und dem Teil der Anwendnung) . Beispiel "TOOL-Auswertung" oder "TOOL Verarbeitung" im Status "Running" sind und diese sollen dann beendet werden. Dabei soll die Taskliste abgefragt werden und so lange warten, bis die exe-Datei hinter dem Dienst ordnungsgemäß beendet ist
Na das ist ja mit der PS ganz einfach:
stop-service -displayname "TOOL*"
und am Ende, falls das notwendig ist
start-service -displayname "TOOL*"
hth
Erik
Moin,
Eigentlich kannst Du Dir das sparen, zu prüfen, ober der Dienst läuft, weil stop-service ja nur Dienste stoppt, die auch laufen. Wenn Du das gerne vorher möchtest, dann geht auch das einfacher:
Liebe Grüße
Erik
Zitat von @MarciMarc85:
Get-WmiObject win32_service | ?{($_.Name -like '*TOOL*')-and ($_.State -eq "Running")} | Stop-Service
Eigentlich kannst Du Dir das sparen, zu prüfen, ober der Dienst läuft, weil stop-service ja nur Dienste stoppt, die auch laufen. Wenn Du das gerne vorher möchtest, dann geht auch das einfacher:
get-service -displayname TOOL* | where-object {$_.status -eq running} | stop-service
Liebe Grüße
Erik
Zitat von @MarciMarc85:
Wenn ich auf der Arbeit nur nebenbei so viel Zeit hätte, würde ich nicht fragen müssen ;)
Wenn ich auf der Arbeit nur nebenbei so viel Zeit hätte, würde ich nicht fragen müssen ;)
Ach, aber wir haben nebenbei so viel Zeit, Deine Arbeit zu machen?
Ich würde das so lösen:
get-service -displayname Tool-das-zuerst-runter-muss | stop-service
Und dann weiter wie oben.
hth
Erik

Zitat von @MarciMarc85:
dass ein bestimmter Dienst von denen zuerst beendet werden muss. kann ich das irgendwie in der Abfrage sortieren?
dass ein bestimmter Dienst von denen zuerst beendet werden muss. kann ich das irgendwie in der Abfrage sortieren?
get-service -displayname TOOL* | %{$_.DependentServices | stop-service -Force; $_ | stop-service -Force}
Zitat von @138810:
Zitat von @MarciMarc85:
dass ein bestimmter Dienst von denen zuerst beendet werden muss. kann ich das irgendwie in der Abfrage sortieren?
dass ein bestimmter Dienst von denen zuerst beendet werden muss. kann ich das irgendwie in der Abfrage sortieren?
> get-service -displayname TOOL* | ${$_.DependentServices | stop-service; $_ | stop-service}
^------------- Das sollte wohl ein % werden ;-)
>

Jopp. Merci.