Cómo extraer el nombre del archivo de una ruta usando PowerShell

  1. Usa el cmdlet Split-Path para extraer el nombre del archivo de una ruta en PowerShell
  2. Usa los métodos de la clase Path de .NET para extraer el nombre del archivo de una ruta en PowerShell
  3. Usa los cmdlets Get-Item y Get-ChildItem para extraer el nombre del archivo de una ruta en PowerShell
  4. Usa expresiones regulares para extraer el nombre del archivo de una ruta en PowerShell
  5. Usa la manipulación de cadenas para extraer el nombre del archivo de una ruta en PowerShell
  6. Usa la clase System.IO.FileInfo para extraer el nombre del archivo de una ruta en PowerShell
  7. Conclusión
Cómo extraer el nombre del archivo de una ruta usando PowerShell

Una ruta de archivo indica la ubicación del archivo en el sistema. Al trabajar con archivos en PowerShell, es posible que necesite obtener solo el nombre del archivo de una ruta.

Hay múltiples formas de obtener la ruta de los archivos en PowerShell. Este tutorial te enseñará a extraer el nombre del archivo de una ruta con PowerShell.

Usa el cmdlet Split-Path para extraer el nombre del archivo de una ruta en PowerShell

En PowerShell, el cmdlet Split-Path es una herramienta útil para aislar segmentos específicos de una ruta dada. Ya sea la carpeta principal, subcarpeta, nombre del archivo o solo la extensión del archivo, Split-Path te permite apuntar y mostrar estos elementos.

Extraer el nombre del archivo con extensión

Para capturar el nombre del archivo junto con su extensión desde una ruta, puedes emplear el comando Split-Path con el parámetro -Leaf:

Split-Path C:\pc\test_folder\hello.txt -Leaf

Salida:

hello.txt

Obtener el nombre del archivo sin extensión

En casos donde necesitas el nombre del archivo sin la extensión, el parámetro -LeafBase es útil. Sin embargo, es importante notar que este parámetro está disponible en versiones de PowerShell 6.0 y posteriores:

Split-Path C:\pc\test_folder\hello.txt -LeafBase

Salida:

hello

Usa los métodos de la clase Path de .NET para extraer el nombre del archivo de una ruta en PowerShell

En .NET, la clase Path ofrece métodos útiles para extraer fácilmente el nombre y la extensión del archivo de una ruta especificada. Exploremos estas capacidades con ejemplos.

Extraer el nombre del archivo con extensión usando GetFileName

El método GetFileName de la clase Path recupera el nombre del archivo junto con su extensión de una ruta dada. Demostremos esto con la ruta C:\pc\test_folder\hello.txt:

[System.IO.Path]::GetFileName('C:\pc\test_folder\hello.txt')

Salida:

hello.txt

Obtener el nombre del archivo sin extensión usando GetFileNameWithoutExtension

Para extraer solo el nombre del archivo sin la extensión, puedes usar el método GetFileNameWithoutExtension. Esto es particularmente útil cuando necesitas el nombre del archivo sin incluir el tipo de archivo:

[System.IO.Path]::GetFileNameWithoutExtension('C:\pc\test_folder\hello.txt')

Salida:

hello

Usa los cmdlets Get-Item y Get-ChildItem para extraer el nombre del archivo de una ruta en PowerShell

En PowerShell, los cmdlets Get-Item y Get-ChildItem son herramientas esenciales para trabajar con archivos y directorios, permitiéndote extraer información específica sobre el elemento en una ubicación dada.

Veamos cómo usar estos cmdlets para extraer el nombre del archivo de una ruta dada, incluyendo variaciones para obtener el nombre del archivo con o sin la extensión.

Extraer el nombre del archivo con extensión usando Get-Item

El cmdlet Get-Item recupera información detallada sobre el elemento especificado, incluyendo su directorio, modo, última hora de escritura, longitud y nombre. Para extraer el nombre del archivo con la extensión, puedes usar la propiedad .Name en conjunto con Get-Item.

Demostremos esto con una ruta específica, C:\pc\test_folder\hello.txt:

(Get-Item C:\pc\test_folder\hello.txt).Name

Salida:

hello.txt

Obtener el nombre del archivo sin extensión usando Get-Item

Si necesitas extraer solo el nombre del archivo sin la extensión, puedes utilizar la propiedad .BaseName en combinación con Get-Item. Esto te permite aislar solo el nombre del archivo de la ruta proporcionada:

(Get-Item C:\pc\test_folder\hello.txt).BaseName

Salida:

hello

Aplicar el método con Get-ChildItem

Este enfoque también es aplicable al usar el cmdlet Get-ChildItem, que recupera información sobre los elementos en una ubicación específica. Aquí te mostramos cómo puedes usarlo para extraer el nombre del archivo con o sin la extensión:

(Get-ChildItem C:\pc\test_folder\hello.txt).Name
(Get-ChildItem C:\pc\test_folder\hello.txt).BaseName

Salida:

hello.txt
hello

Usa expresiones regulares para extraer el nombre del archivo de una ruta en PowerShell

Las expresiones regulares también se pueden utilizar para extraer el nombre del archivo de una ruta en PowerShell. La clase Regex en .NET proporciona herramientas poderosas para la coincidencia y manipulación de patrones.

Veamos cómo funciona esto:

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Use regular expression to extract the filename
$filename = [System.Text.RegularExpressions.Regex]::Match($path, '\\([^\\]+)$').Groups[1].Value
$filename

Salida:

hello.txt

En este ejemplo, utilizamos una expresión regular para capturar el texto después de la última barra invertida, que representa el nombre del archivo junto con su extensión.

La expresión regular '\\([^\\]+)$' se puede descomponer de la siguiente manera:

  • \\: Coincide con una barra invertida en la ruta.
  • ([^\\]+): Captura uno o más caracteres que no son una barra invertida (representando el nombre del archivo con extensión) dentro de un grupo de captura.
  • $: Especifica que la coincidencia debe ocurrir al final de la cadena.

Al usar el método Match de la clase Regex, aplicamos la expresión regular a la ruta.

La coincidencia resultante contiene el nombre del archivo con su extensión. Accedemos a esto a través de Groups[1].Value para extraer el nombre de archivo deseado.

Usa la manipulación de cadenas para extraer el nombre del archivo de una ruta en PowerShell

Las técnicas de manipulación de cadenas también se pueden emplear para extraer el nombre del archivo de una ruta. Por ejemplo, puedes usar el método LastIndexOf para encontrar la última ocurrencia de la barra invertida y extraer el nombre del archivo en consecuencia.

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Find the index of the last backslash
$lastBackslashIndex = $path.LastIndexOf("\") + 1

# Extract the filename
$filename = $path.Substring($lastBackslashIndex)
$filename

Salida:

hello.txt

Aquí, utilizamos el método LastIndexOf para determinar el índice de la última ocurrencia de una barra invertida (\) en la ruta, identificando esencialmente la posición donde comienza el nombre del archivo.

  • $lastBackslashIndex = $path.LastIndexOf("\") + 1: Esta línea calcula el índice de la última barra invertida y suma 1 para asegurarse de comenzar a extraer caracteres después de la barra invertida.

A continuación, utilizamos el método Substring para extraer el nombre del archivo, comenzando desde el índice después de la última barra invertida y continuando hasta el final de la cadena.

  • $filename = $path.Substring($lastBackslashIndex): Aquí, extraemos el nombre del archivo utilizando Substring con el índice calculado.

Usa la clase System.IO.FileInfo para extraer el nombre del archivo de una ruta en PowerShell

La clase System.IO.FileInfo proporciona propiedades para acceder a la información del archivo, incluyendo el nombre del archivo. Podemos crear un objeto FileInfo y luego acceder a la propiedad Name para obtener el nombre del archivo.

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Create a FileInfo object
$fileInfo = New-Object System.IO.FileInfo $path

# Extract the filename
$filename = $fileInfo.Name
$filename

Salida:

hello.txt

En este ejemplo, creamos un objeto FileInfo usando New-Object y la clase System.IO.FileInfo, lo que nos permite acceder a propiedades y métodos relacionados con el archivo.

  • $fileInfo = New-Object System.IO.FileInfo $path: Esta línea de código construye un objeto FileInfo basado en la ruta proporcionada.

A continuación, utilizamos la propiedad Name del objeto FileInfo para extraer el nombre del archivo.

  • $filename = $fileInfo.Name: Aquí, recuperamos el nombre del archivo al acceder a la propiedad Name del objeto FileInfo.

Conclusión

En este tutorial, exploramos varios métodos para extraer nombres de archivos de rutas en PowerShell. Desde usar cmdlets integrados como Split-Path hasta emplear expresiones regulares y manipulación de cadenas, tienes una variedad de opciones para elegir según tus requisitos específicos.

Entender estas técnicas mejorará tu competencia en el manejo de rutas de archivos y la extracción de información esencial del archivo en PowerShell. Ya sea que prefieras la simplicidad de los cmdlets integrados o la versatilidad de las expresiones regulares, PowerShell ofrece un conjunto robusto de herramientas para una manipulación de archivos efectiva.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artículo relacionado - PowerShell File