Búsqueda de sitios web

Cómo obtener el nombre del archivo sin extensión en PowerShell


Recientemente, uno de mis clientes me pidió que escribiera un script de PowerShell para buscar nombres de archivos sin extensiones en una carpeta. Probé diferentes métodos. En este tutorial de PowerShell, explicaré cómo obtener el nombre de un archivo sin extensión en PowerShell usando varios métodos.

Para obtener el nombre del archivo sin la extensión en PowerShell, puede usar la propiedad BaseName de un objeto FileInfo, que se puede obtener usando el cmdlet Get-Item. Como alternativa, emplee el método [System.IO.Path]::GetFileNameWithoutExtension() de .NET Framework para obtener un enfoque más programático. Otra opción es utilizar el cmdlet Split-Path con el parámetro -LeafBase, que genera directamente el nombre del archivo sin extensión.

Usando la propiedad Get-Item y BaseName

La forma más sencilla y sencilla de obtener un nombre de archivo sin su extensión en PowerShell es utilizar el cmdlet Get-Item y luego acceder a la propiedad BaseName. La propiedad BaseName de un objeto de archivo contiene el nombre del archivo sin la extensión. Aquí está el script completo de PowerShell.

# Define the full path of the file
$filePath = "C:\MyFolder\Users.txt"

# Get the file name without the extension
$fileNameWithoutExtension = (Get-Item $filePath).BaseName

# Display the file name
Write-Output $fileNameWithoutExtension

Esto generará Users, que es el nombre del archivo sin la extensión .txt.

Ejecuté el script anterior usando código VS y puedes ver claramente el resultado en la siguiente captura de pantalla:

Uso de métodos de clase System.IO.Path

También puede utilizar clases y métodos de .NET Framework para obtener el nombre del archivo sin extensión en PowerShell. Puede utilizar la clase System.IO.Path y su método GetFileNameWithoutExtension. Este método de .NET Framework se puede utilizar directamente en PowerShell como se muestra a continuación

# Define the full path of the file
$filePath = "C:\example\sample.txt"

# Get the file name without the extension using System.IO.Path class
$fileNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($filePath)

# Display the file name
Write-Output $fileNameWithoutExtension

Este script también devolverá sample como nombre de archivo sin la extensión.

Uso del cmdlet de ruta dividida

El cmdlet Split-Path de PowerShell también se puede utilizar para aislar el nombre del archivo sin la extensión. Este cmdlet está diseñado para manipular cadenas de ruta y se puede usar con el parámetro -LeafBase.

# Define the full path of the file
$filePath = "C:\MyFolder\Users.txt"

# Use Split-Path with -LeafBase to get the file name without the extension
$fileNameWithoutExtension = Split-Path $filePath -LeafBase

# Display the file name
Write-Output $fileNameWithoutExtension

Una vez que ejecute el script de PowerShell anterior, nos mostrará el resultado como el primer método.

Usando expresiones regulares

También puede usar expresiones regulares, PowerShell puede hacer coincidir patrones y extraer el nombre del archivo sin la extensión usando el operador -replace.

# Define the full path of the file
$filePath = "C:\example\sample.txt"

# Use regex to remove the extension from the file name
$fileNameWithoutExtension = $filePath -replace "\.[^.]+$"

# Extract just the file name without the path
$fileNameWithoutExtension = [System.IO.Path]::GetFileName($fileNameWithoutExtension)

# Display the file name
Write-Output $fileNameWithoutExtension

Esto generará sample, eliminando tanto la ruta del directorio como la extensión del archivo.

Conclusión

En este tutorial, hemos explorado varios métodos para obtener el nombre del archivo sin la extensión usando PowerShell, como usar cmdlets nativos como Get-Item y Split-Path. , o métodos .NET Framework como los de System.IO.Path.

Los cmdlets Get-Item y BaseName son fáciles de leer y usar para obtener el nombre del archivo sin extensión en PowerShell.

Espero que ahora tengas una idea completa de cómo obtener el nombre del archivo sin extensión usando PowerShell.

Artículos relacionados