¿Cómo cambio el directorio a una carpeta específica en una ruta?
Necesito verificar si mi ubicación actual contiene un directorio llamado _framework y si es así, establecer la ubicación en esa carpeta.
El problema es que no sé qué hay en la ruta antes de mi palabra clave o después de mi palabra clave.
Entonces, para visualizar, básicamente si estoy aquí:
C: \ foo \ bar \ some \ _framework \ stuff \ xy
Necesito ir aquí:
C: \ foo \ bar \ some \ _framework
He escrito un código que funciona:
$ CurrentPath = (Get-Location) .Path
$ SplitUp = $ CurrentPath -split ‘& # 39; \ & # 39;
$ Resultado = @ ()
foreach ($ Split en $ SplitUp) {
$ Resultado + = $ Separar
si ($ Separar -eq ‘& # 39; _framework & # 39;) {break}
}
Set-Location ($ Resultado -join ‘& # 39; \ & # 39;)
pero lo encuentro masivamente feo. ¿hay un cmdlet simple que me dé el resultado deseado de una manera más fácil, sin dividir e iterar el resultado, o es esta la única solución?
Tiene que estar disponible en PowerShell 5.1.
davy.ai
Puede usar el cmdlet
Split-Path
para obtener el directorio padre del directorio_framework
. El parámetro-Parent
devolverá el directorio padre de la ruta especificada.Por ejemplo, si tiene la ruta
C:\foo\bar\some\_framework\stuff\xy
, puede usar el siguiente comando para obtener el directorio padre de_framework
:powershell
$ParentDir = Split-Path -Path "C:\foo\bar\some_framework\stuff\xy" -Parent
Esto devolverá
C:\foo\bar\some\_framework
. Luego puede usar el cmdletSet-Location
para establecer la ubicación en el directorio padre.powershell
Set-Location -Path $ParentDir