Cómo obtener la extensión del archivo usando PowerShell

  1. Obtenga la extensión del archivo usando Split-Path en PowerShell
  2. Obtenga la extensión del archivo usando el cmdlet Get-ChildItem en PowerShell
  3. Obtenga la extensión del archivo usando System.IO.Path en PowerShell
  4. Obtenga la extensión del archivo usando System.IO.FileInfo en PowerShell
  5. Conclusión
Cómo obtener la extensión del archivo usando PowerShell

Por lo general, se requiere extraer un nombre de archivo de la ruta completa mientras se trabaja en sus scripts de PowerShell. Por ejemplo, su script recibió una ruta de archivo completa y solo desea obtener la extensión del archivo.

Esta guía completa profundiza en diversas metodologías para extraer extensiones de archivo utilizando PowerShell, una tarea fundamental pero crucial en numerosos escenarios de scripting. Cada sección del artículo presenta un enfoque diferente, desde la simplicidad de Split-Path hasta el uso más sofisticado del marco de .NET y la clase System.IO.FileInfo.

Obtenga la extensión del archivo usando Split-Path en PowerShell

El objetivo principal de usar Split-Path -Leaf en este contexto es aislar el nombre del archivo y su extensión de una ruta dada. Este método es particularmente efectivo cuando se trabaja solo con el nombre del archivo o una ruta relativa.

Una vez que se obtiene el nombre del archivo, la extensión se puede extraer fácilmente utilizando métodos de división de cadenas.

Código de ejemplo:

# Define the file path
$filePath = "sample.txt"

# Extract the file extension
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1]

# Output the extension
Write-Output $extension

En este script, comenzamos definiendo un nombre de archivo $filePath. El comando Split-Path -Path $filePath -Leaf aísla el nombre del archivo (sample.txt).

Luego dividimos esta cadena en el punto, lo que resulta en un array donde el primer elemento es el nombre del archivo sin la extensión (sample), y el segundo elemento es la extensión (txt). Al acceder al segundo elemento de este array con [1], obtenemos la extensión.

Finalmente, se utiliza Write-Output para mostrar la extensión.

Salida:

obtener la extensión del archivo usando powershell - salida 1

Obtenga la extensión del archivo usando el cmdlet Get-ChildItem en PowerShell

El comando Get-ChildItem obtiene los elementos en una o más ubicaciones especificadas. Por ejemplo, si el objeto es un contenedor, obtiene las cosas dentro del contenedor mencionado, conocidas como elementos secundarios.

Una ubicación puede ser un sistema de archivos, como un directorio, o un sitio expuesto por un proveedor diferente de Windows PowerShell. El comando Get-ChildItem obtiene los directorios, subdirectorios y archivos en una unidad del sistema de archivos.

Dado que el cmdlet Get-ChildItem se ocupa de archivos, tiene un atributo de propiedad de PowerShell que podemos exportar para obtener la extensión del archivo consultado. A diferencia del cmdlet Split-Path, este método puede enviar la extensión correctamente, incluso si hay caracteres de punto en el nombre del archivo.

Código de ejemplo:

Get-ChildItem 'sample.txt' | Select-Object Extension

En este script, Get-ChildItem 'sample.txt' recupera el objeto de archivo para sample.txt. El cmdlet Get-ChildItem se utiliza típicamente para listar elementos en un directorio, pero cuando se proporciona un nombre de archivo específico, devuelve el objeto de archivo para ese archivo.

Este objeto incluye varias propiedades, una de las cuales es la extensión del archivo.

La salida de Get-ChildItem se envía luego a Select-Object Extension. Este cmdlet filtra las propiedades del objeto de archivo, generando solo la propiedad Extension.

Salida:

obtenga la extensión del archivo usando powershell - salida 2

Obtenga la extensión del archivo usando System.IO.Path en PowerShell

El siguiente enfoque se basa en las clases del marco de .NET. Aunque se desaconseja comúnmente usar clases del marco de .NET en scripts de PowerShell, especialmente si hay un comando nativo de PowerShell disponible, puede ser apropiado para este caso de uso específico.

En el ejemplo a continuación, si se le da el nombre del archivo, usaríamos el método estático GetExtension de la clase System.IO.Path:

Código de ejemplo:

[System.IO.Path]::GetExtension("sample.txt")

En el ejemplo proporcionado, se utiliza la clase .NET [System.IO.Path], y se llama a su método estático GetExtension(). Pasamos "sample.txt" como argumento al método.

Este método analiza la cadena y extrae la subcadena que representa la extensión del archivo. La belleza de este método radica en su simplicidad y enfoque directo para manejar nombres y rutas de archivos, ya que no requiere que el archivo exista en el sistema de archivos.

Salida:

obtener la extensión del archivo usando powershell - salida 3

Obtenga la extensión del archivo usando System.IO.FileInfo en PowerShell

El uso principal de System.IO.FileInfo en este contexto es obtener información detallada sobre un archivo específico, como su extensión. Este método es particularmente útil en scripts donde los metadatos del archivo son cruciales y hay una necesidad de más que solo un manejo básico de archivos.

Código de ejemplo:

# Create a FileInfo object for the specified file
$FileInfo = New-Object System.IO.FileInfo('sample.txt')

# Access the extension property of the FileInfo object
$Extension = $FileInfo.Extension

# Print the extension
Write-Output $Extension

En este script, iniciamos el proceso creando un objeto System.IO.FileInfo para sample.txt. Este objeto encapsula varios detalles sobre el archivo, incluyendo su nombre, directorio, tamaño y, lo que es importante, su extensión.

Al acceder a la propiedad .Extension del objeto FileInfo, extraemos la extensión del archivo. Esta propiedad devuelve la extensión como una cadena, completa con el punto inicial (por ejemplo, .txt).

Salida:

obtener la extensión del archivo usando powershell - salida 4

Conclusión

Navegar a través de las sutilezas de las extensiones de archivo en PowerShell revela un espectro de técnicas, cada una con sus ventajas y aplicaciones únicas. Esta exploración nos ha llevado desde el uso directo de Split-Path y Get-ChildItem, ideal para recuperaciones simples y rápidas, hasta los niveles más profundos del marco de .NET con System.IO.Path y System.IO.FileInfo, donde se logra un equilibrio entre complejidad y capacidad de manera elegante.

Ya sea que esté automatizando una tarea de rutina, realizando operaciones masivas de archivos o desarrollando scripts sofisticados para la gestión del sistema, comprender estos métodos enriquece su conjunto de herramientas de PowerShell. Los diversos enfoques discutidos aquí subrayan la adaptabilidad y robustez de PowerShell, empoderando tanto a los scriptores novatos como a los experimentados para personalizar sus soluciones con precisión y eficiencia.

¿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
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - PowerShell File