es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  ,

Answer

  1. Avatar for 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 cmdlet Set-Location para establecer la ubicación en el directorio padre.

    powershell
    Set-Location -Path $ParentDir

Comments are closed.