¿Necesitas dividir rutas para obtener partes específicas de ella? Si es así, entonces PowerShell `Split-Path` es el amigo en el que puedes confiar. Cuando trabajas con archivos, certificados y el registro, notarás que las rutas representan sus ubicaciones.
Y en algún momento, es posible que necesites filtrar qué parte de una ruta devolver, quizás al hacer automatización. ¡Tienes suerte, porque este tutorial te enseñará formas de usar el cmdlet `Split-Path` de PowerShell para hacerlo!
¡Vamos! ¡Sigue leyendo y te daremos un nuevo arma para tu arsenal de PowerShell!
Prerrequisitos
Si planeas seguir los ejemplos de este tutorial práctico, necesitarás una computadora con cualquier versión moderna de Windows que tenga PowerShell 5.1 o superior. Este tutorial utilizará Windows 10 20H2 con PowerShell 7.1.1.
¿Qué hay en una ruta?
Antes de adentrarnos en profundidad con el cmdlet `Split-Path` de PowerShell, asegurémonos de que tengas claro qué es una ruta. Una ruta determina la ubicación de un elemento que sigue un formato específico.
Por ejemplo, la ruta de un archivo podría ser C:\demo\subfolder1\TestFile_11.txt. Si separas esta ruta en partes, la ruta incluye lo siguiente:
- C: is the drive or the qualifier, or the specified path. The qualifier is the part of the path from the left up to the colon (
:
) character. - \demo\subfolder1\ es la carpeta y subcarpeta(s) o contenedores.
- TestFile_11.txt es el nombre de archivo o la hoja. La hoja es el último elemento o parte de una ruta.
Recuerda, sin embargo, que las rutas no se limitan exclusivamente a archivos y carpetas. Otras rutas válidas pueden incluir:
- Certificado (por ejemplo, Cert:\CurrentUser\My)
- Registro (por ejemplo, HKCU:\Software)
- Función (por ejemplo, Function:\New-Guid)
- Variable (por ejemplo, Variable:\PSEdition)
- Directorio Activo (por ejemplo, AD:\CN=Users,DC=Constoso,DC=com)
Los parámetros de Split-Path de PowerShell
Como cualquier cmdlet, Split-Path
viene con un conjunto de parámetros que manipulan cómo se comporta el cmdlet y devuelve su salida. Y estos parámetros son los que conforman la sintaxis de Split-Path
en PowerShell.
-Path
– Este parámetro acepta una o más cadenas de ruta que deseas dividir. Este parámetro también acepta entrada de canalización. Los comodines en las rutas también son aceptables.-LiteralPath
– Al igual que el parámetro-Path
, el parámetro-LiteralPath
también acepta rutas para dividir. Pero este parámetro tratará la ruta tal como está escrita. Es decir, el comando no interpretará comodines si usas este parámetro para especificar rutas.-Resolve
– Este parámetro indica al cmdletSplit-Path
que resuelva los archivos o elementos que son referenciados por la ruta que proporcionaste. Debido a su naturaleza literal, no puedes usar este parámetro junto con el parámetro-LiteralPath
.-IsAbsolute
– Este parámetro devuelve un valor booleano para determinar si la ruta que especificaste es una ruta absoluta o no.
El cmdlet
Split-Path
de PowerShell también tiene un parámetro llamado-Credential
, que supuestamente acepta un objeto PSCredential. Pero según Microsoft, este parámetro no es compatible con ninguno de los proveedores PowerShell integrados y genera un error al utilizarlo.
Los siguientes parámetros se denominan los Parámetros de Ubicación Dividida. Estos parámetros indican al cmdlet Split-Path
de PowerShell qué elemento o parte de una ruta debe devolver. Dado que el cmdlet solo puede devolver un elemento de una ruta, solo puedes usar uno de estos parámetros a la vez.
-Parent
– Devuelve la ubicación principal (sin el elemento o nombre de archivo) de la ruta que especificaste. Este parámetro también es el parámetro predeterminado de ubicación dividida, lo que significa que puedes omitir este parámetro y aún obtener la ubicación principal como resultado.-Leaf
– Devuelve solo el último elemento de la ruta o el elemento final.-LeafBase
– Devuelve solo el último elemento de la ruta o el elemento final sin la extensión. Este parámetro solo está disponible en PowerShell 6.0 y versiones posteriores.- -Extension: Devuelve solo la extensión de la hoja (desde el último punto “
.
” hasta el último carácter de la ruta). Este parámetro solo está disponible en PowerShell 6.0 y superior. - -Qualifier: Devuelve solo la unidad o calificador de la ruta.
- -NoQualifier: Elimina la unidad o calificador del resto de la ruta.
Utilizando el cmdlet Split-Path de PowerShell (Ejemplos)
El cmdlet Split-Path de PowerShell te permite dividir y desglosar partes de una ruta. Después de hacerlo, puedes especificar qué parte de una ruta deseas devolver. Dependiendo de tus necesidades de salida, puedes optar por devolver el calificador, la ruta sin un calificador y el(los) nombre(s) de archivo.
Obteniendo la carpeta principal de una ruta
Para devolver la carpeta principal de la ruta, ejecuta el cmdlet Split-Path
de PowerShell y añade el parámetro -Parent
.
El resultado a continuación muestra que el comando devuelve la ruta de la carpeta principal.

Consejo: Ejecutar el cmdlet Split-Path de PowerShell sin parámetros devolverá la carpeta principal por defecto, el mismo comportamiento que usar el parámetro
-Parent
.
Consejo: El parámetro
-Path
acepta múltiples rutas, lo que te permite dividir múltiples valores de cadenas de rutas en un solo comando.e.g.,
Split-Path -Path 'c:\folder1','c:\folder2'
Mostrando una Ruta Sin el Calificador
Imagina que estás creando un script que duplica la estructura de árbol de carpetas de una unidad a otra (por ejemplo, C:\demo\subfolder1 a D:\demo\subfolder1). Es posible que desees que tu código divida la ruta de origen y obtenga solo la estructura de carpetas sin la letra de la unidad.
Para obtener la ruta sin el calificador, ejecuta el cmdlet Split-Path
de PowerShell con el parámetro -NoQualifier
como se muestra en el comando a continuación. Este comando divide la ruta mientras omite la letra de la unidad en el resultado.
Como puedes ver en el resultado a continuación, usar el parámetro noQualifier
devuelve la ruta pero sin la cadena del calificador.

Obtener la unidad o el calificador de una ruta
Puede haber momentos en los que necesites devolver solo el calificador o la letra de la unidad. Por ejemplo, cuando desees que tu script resuma los resultados según las letras de unidad.
Y para hacerlo, ejecuta el comando Split-Path
de PowerShell a continuación con el parámetro -Qualifier
. Este comando dividirá la ruta y devolverá solo la cadena del calificador como resultado.

Mostrar el nombre de un archivo, directorio o elemento
Imagina una ruta como un árbol. El calificador podría ser el árbol en sí, las carpetas son las ramas y al final encontrarás la hoja. Una hoja es cualquier cadena de longitud no nula al final de la ruta.
Cuando necesites dividir una ruta para obtener la hoja, ejecuta el comando Split-Path
a continuación y añade el parámetro -Leaf
.
Como resultado, la imagen a continuación muestra que el comando solo devolvió el nombre de archivo de la ruta especificada.

Dividiendo el nombre de archivo y la extensión (≥PowerShell 6.0)
Nota: Esta sección se aplica a PowerShell 6.0 y versiones posteriores.
Has dividido la ruta y has devuelto el elemento. Y el elemento, en este caso, es un nombre de archivo (TestFile_11.txt), que tiene dos partes: la base y la extensión. El cmdlet Split-Path
de PowerShell te permite dividir aún más el nombre en estas dos partes con los parámetros -LeafBase
y -Extension
.
Para obtener la base y la extensión de un nombre de archivo, ejecuta los comandos a continuación.
Si la ruta no tiene una extensión, el parámetro
Extension
devolverá una cadena vacía.

Dividiendo el nombre de archivo y la extensión (≤ Windows PowerShell 5.1)
Desafortunadamente, los parámetros -LeafBase
y -Extension
no están disponibles en Windows PowerShell 5.1 y versiones anteriores. No te preocupes, con algo de magia de PowerShell, puedes replicar la salida de estos parámetros incluso si solo tienes Windows PowerShell 5.1.
Pero en lugar del cmdlet Split-Path
, usarás la siguiente mejor opción: la combinación del split()
método y el -replace
operador.
A PowerShell string object, such as the path, contains a split()
method. This method allows you to split a string into multiple elements based on a delimiter character that you provide. And in the case of paths, the delimiter is the (\\
) back-slash character.
Por otro lado, el operador -replace
te permite reemplazar cadenas utilizando expresiones regulares (RegEx).
Para imitar los resultados del parámetro -LeafBase
, ejecuta el siguiente comando en PowerShell.
Como resultado, la captura de pantalla a continuación muestra que el comando devolvió solo el nombre base del archivo.

Ahora, para obtener solo la extensión del archivo, ejecute el comando a continuación en PowerShell.
El resultado a continuación muestra que el comando devolvió solo la extensión del archivo – txt
.

Determinando si la Ruta es Absoluta
Como administrador del sistema, encontrará dos tipos de rutas –absoluta y relativa. Pero ¿cuál es la diferencia? Una ruta absoluta comienza con un calificador, como C:\demo o HKCU:\Software. En contraste, una ruta relativa no tiene un calificador, como .\demo o \folder1\folder2.
El cmdlet Split-Path
de PowerShell puede ayudarte a identificar una ruta absoluta utilizando el parámetro -IsAbsolute
. Para hacerlo, ejecuta los siguientes comandos para determinar si la ruta es absoluta.
Como puedes ver a continuación, el parámetro -isAbsolute
devuelve un valor booleano para indicar si la ruta es absoluta (TRUE
) o relativa (FALSE
).

División y Resolución de Rutas con Comodines
Hasta este punto, las rutas que divides con el cmdlet Split-Path
no necesitan existir. Ya sea que una ruta exista o no, este cmdlet la dividirá y te dará el resultado.
Pero el cmdlet Split-Path
de PowerShell tiene otro parámetro llamado -Resolve
. Este parámetro te permite resolver los elementos referenciados por comodines. Y si utilizas este parámetro, la ruta que dividirás y los elementos dentro de ella deben existir previamente.
Por ejemplo, para devolver los elementos que coinciden con la extensión de archivo *.txt
, ejecuta el siguiente comando. El parámetro -Leaf
asegura que el cmdlet devuelva solo los elementos y no los contenedores principales.
El comodín (
*
) representa uno o más caracteres para que coincidan, mientras que (?
) representa un comodín de un solo carácter.
El resultado a continuación enumera los archivos TestFile_11.txt hasta TestFile_20.txt. Estos archivos todos coincidieron con la extensión de archivo .txt
.

Para resolver una coincidencia de un solo carácter en su lugar, reemplace el comodín asterisco (*) con el comodín de interrogación (?), como se muestra en el comando a continuación.
La salida a continuación muestra solo el archivo TestFile_20.txt porque este archivo es el único que coincidió.

Si la ruta contiene un carácter de escape, como el acento grave (“`), encierre la ruta entre comillas simples para resolver la ruta. Por ejemplo, el comando a continuación divide y resuelve una ruta que contiene un carácter de escape.

Como prueba de concepto, si no encierra esa ruta entre comillas simples, el comando devolverá un error de que la ruta no existe. El mismo error ocurre si usa comillas dobles en su lugar.

Conclusión
El cmdlet Split-Path
de PowerShell es una herramienta indispensable tanto para administradores de sistemas como para usuarios en general. Este tutorial tiene como objetivo enseñarle cómo el cmdlet Split-Path
puede dividir cualquier ruta dada y devolver elementos específicos según el parámetro que use.
¿Has usado Split-Path
en tus tareas anteriormente? Si no, ¿este tutorial te convenció de usarlo en tus tareas manuales o de automatización? ¿O conoces otra forma de dividir rutas mejor que el Split-Path
de PowerShell?