¿Cómo obtener extensiones de archivos a partir de nombres de archivos en PowerShell?
Estaba trabajando en un proyecto de automatización cuando me pidieron que extrajera extensiones de archivos de nombres de archivos usando PowerShell. Probé diferentes métodos y en este tutorial exploraré varios métodos para recuperar la extensión de archivo de un nombre de archivo en PowerShell con scripts completos.
Para obtener la extensión de archivo de un nombre de archivo en PowerShell, puede usar el método Get-Extension de la clase [System.IO.Path]. Por ejemplo, $fileExtension=[System.IO.Path]::GetExtension('C:\example\report.xlsx') almacenará la cadena '.xlsx' en la variable $fileExtension. Este método es sencillo y eficaz para extraer el sufijo que indica el tipo de archivo.
Obtener extensiones de archivos a partir de nombres de archivos en PowerShell
Una extensión de archivo es un sufijo al final de un nombre de archivo que indica el tipo de archivo. Está separado del nombre del archivo principal por un punto. Por ejemplo, en "documento.pdf", ".pdf" es la extensión de archivo que sugiere que el archivo es un documento PDF.
PowerShell proporciona diferentes métodos y cmdlets para obtener la extensión de un nombre de archivo.
Método 1: uso de la clase System.IO.Path
Una de las formas más sencillas de obtener una extensión de archivo en PowerShell es mediante la clase [System.IO.Path]. Esta clase proporciona métodos estáticos para crear, mover y enumerar directorios y archivos.
Aquí hay un script de ejemplo que explica cómo usar la clase [System.IO.Path] para extraer la extensión del archivo:
# Define the full path of the file
$filePath = "C:\MyFolder\users.xlsx"
# Extract the extension from the file path
$fileExtension = [System.IO.Path]::GetExtension($filePath)
# Display the file extension
Write-Host "The file extension is: $fileExtension"En el script de PowerShell anterior, el método GetExtension() se utiliza para obtener la extensión del archivo a partir de la ruta completa del archivo.
Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script usando vs code.
Método 2: usar Get-ChildItem y Select-Object
El cmdlet Get-ChildItem de PowerShell es otra forma de obtener detalles sobre archivos. Combinado con el cmdlet Select-Object, puede aislar y mostrar la extensión del archivo.
Así es como puede usar estos cmdlets para obtener la extensión del archivo:
# Define the directory path
$directoryPath = "C:\MyFolder"
# Get all files in the directory and select only the extension property
$fileExtensions = Get-ChildItem -Path $directoryPath | Select-Object Extension
# Display the file extensions
$fileExtensions | ForEach-Object { Write-Host "Found file extension: $($_.Extension)" }Este script recupera todos los archivos en el directorio especificado y luego usa Select-Object para seleccionar solo la propiedad de extensión de cada archivo.
Mire el resultado en la captura de pantalla a continuación; muestra todas las extensiones de archivo en la carpeta mencionada. Donde las extensiones no mencionadas son las subcarpetas.
Método 3: usar ruta dividida
El cmdlet Split-Path de PowerShell está diseñado para manipular tanto la ruta como la hoja de una ubicación determinada. Puedes usarlo para dividir la ruta y el nombre del archivo, aislando la extensión.
Script de ejemplo usando Split-Path:
# Define the full file path
$filePath = "C:\MyFolder\Customers.xlsx"
# Use Split-Path to separate the file name and extension
$fileNameAndExtension = Split-Path -Path $filePath -Leaf
# Extract the extension from the full file name
$fileExtension = $fileNameAndExtension -replace '.*\.'
# Display the file extension
Write-Host "The file extension is: $fileExtension"En este script, Split-Path obtiene la hoja de la ruta (el nombre del archivo y la extensión) y luego se usa una expresión regular para eliminar todo lo que está antes del punto, dejando solo la extensión.
Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script usando el código VS.
Método 4: usar expresiones regulares
PowerShell también puede usar expresiones regulares para extraer la extensión del archivo de un nombre de archivo.
Aquí hay un script que usa expresiones regulares para encontrar la extensión:
# Define the filename
$fileName = "archive.tar.gz"
# Use regex to extract the file extension
if ($fileName -match "\.(?<Extension>[^.]+)$") {
$fileExtension = $Matches['Extension']
Write-Host "The file extension is: $fileExtension"
} else {
Write-Host "No file extension found."
}Este script utiliza el operador -match para comprobar si el nombre del archivo coincide con el patrón de una extensión de archivo. Si se encuentra una coincidencia, extrae la extensión usando la variable automática $Matches.
Conclusión
Espero que ahora aprendas cómo obtener extensiones de archivos a partir de nombres de archivos en PowerShell. He explicado diferentes métodos para obtener extensiones de archivos a partir de nombres de archivos, como usar la clase [System.IO.Path] o el cmdlet Get-ChildItem, usando el comando Split. -Path, o mediante el uso de expresiones regulares, etc. Espero que ayude.
También te puede interesar:
- ¿Cómo buscar archivos por nombre en PowerShell?
- Cambiar el nombre de archivos con fecha en PowerShell
- ¿Cómo enumerar nombres de archivos solo en PowerShell?
- Copiar y cambiar el nombre de archivos en PowerShell


