Powershell Pfad kürzen

Status
Für weitere Antworten geschlossen.
M

Minuka30

Gast
Hallo miteinander,

leider komm ich nicht weiter, da ich bei Recherche nur auf Datei Änderungen komme.

Also ich möchte ein Skript schreiben das nach Eingabe des Pfades jeden Ordner um die hälfte kürzt.

z.B.: C:\Test\kürzen\1234 ---> C:\Te\kür\12

Bei meinen versuchen nimmt er den ganzen Pfad als eines und kürzt diesen insgesamt (ändert ihn nochnicht)

Hoffe mir kann jemand helfen.

Vielen Dank im Voraus

Viele Grüße
Minuka30
 
Du könntest ja mal deinen bisherigen Code posten...

Auf Basis von dem split-path Befehl könnte man sicherlich was machen, aber das wäre ein wenig umständlich. Vermutlich geht das auch besser.
 
Klar, leider kenne ich mich noch nicht allzu gut aus.


$PATH = 'C:\TEST'

$PATHLANG = $PATH.Length


$halbPath = $Path.length /2

Write-Host $halbPath

$PATH.Substring(0, $halbPath)
 
Zuletzt bearbeitet von einem Moderator:
Würde den Pfad mit spit-path oder .split("/") in einzelne Stückchen zerlegen, via .length kürzen und dann mit join path wieder zusammenfügen das kannst schön per Schleife über das .split array machen.

Viel Spaß bei der Umsetzung ;)
PS : bisschen googlen Hilft vermutlich auch, Pfade wurden bestimmt schon tausendfach per Powershell umgeschrieben. Auf Stackoverflow findet sich oft was passendes.
 
Ja, so wird das nichts.
Du wirst den Pfad in seine Bestandteile splitten müssen und für jedes Teilsegment dein halbPath durchführen und diese dann wieder zusammenwurschteln.

Wie genau das ideal zu machen wäre fällt mir jetzt spontan auch nicht ein, aber eine Option ist, den split-path Befehl und eine Schleife irgendeiner Art zu nutzen.

Du musst halt rausbekommen wie viele Segmente der Pfad hat ( '\' Symbole zählen oder sonstwas), dann den Pfad zerstückseln und in Variablen schreiben, diese halbieren und das wieder zusammenbastlen zu einem Pfad.

Vermutlich gibt es eine bessere Lösung...

edit: ytrap war schneller
 
Hier bitte :)
PowerShell:
$Path = 'C:\Test\kürzen\1234\aloha'
$DriveLetter, $rest = $Path.Split('\')
$PathShortened = @()
$rest | ForEach-Object {
    $halfLength = [math]::Round($_.Length/2 + 0.1)
    $PathShortened += $_.Substring(0, $halfLength)
}
$DriveLetter + '\' + ($PathShortened -join '\')
 
  • Gefällt mir
Reaktionen: DubZ und Rickmer
Status
Für weitere Antworten geschlossen.
Zurück
Oben