Cómo extraer el nombre del archivo de una ruta usando PowerShell
-
Usa el cmdlet
Split-Pathpara extraer el nombre del archivo de una ruta en PowerShell - Usa los métodos de la clase Path de .NET para extraer el nombre del archivo de una ruta en PowerShell
-
Usa los cmdlets
Get-ItemyGet-ChildItempara extraer el nombre del archivo de una ruta en PowerShell - Usa expresiones regulares para extraer el nombre del archivo de una ruta en PowerShell
- Usa la manipulación de cadenas para extraer el nombre del archivo de una ruta en PowerShell
-
Usa la clase
System.IO.FileInfopara extraer el nombre del archivo de una ruta en PowerShell - Conclusión
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 suma1para 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 utilizandoSubstringcon 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 objetoFileInfobasado 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 propiedadNamedel objetoFileInfo.
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.
Artículo relacionado - PowerShell File
- Cómo crear un archivo de texto usando Windows PowerShell
- Cómo obtener la versión del archivo en PowerShell
- Cómo subir archivos con FTP en PowerShell
- Cómo agregar datos a un archivo usando PowerShell
- Cómo almacenar el contenido de un archivo de texto en una variable usando PowerShell
- Consulta de la última hora de escritura del archivo en PowerShell
