Búsqueda de sitios web

¿Cómo obtener el archivo más nuevo en el directorio de PowerShell?


Mi cliente quería realizar algunas operaciones de archivos en el archivo más nuevo de un directorio. Entonces, utilicé varios métodos de PowerShell para obtener el archivo más nuevo en un directorio en PowerShell.

Para obtener el archivo más reciente en un directorio de PowerShell, puede utilizar el cmdlet Get-ChildItem combinado con Sort-Object. Por ejemplo:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1
$newestFile.FullName

Este comando recupera los archivos en la ruta especificada, los ordena según la hora de la última escritura en orden descendente y genera el nombre completo del archivo más nuevo.

1. Usando Get-ChildItem y Sort-Object

La forma más sencilla de obtener el archivo más reciente de un directorio mediante PowerShell es utilizar el cmdlet Get-ChildItem combinado con Sort-Object. A continuación se muestra un script de PowerShell de ejemplo que recupera el archivo más reciente según la hora de la última escritura:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

Este script enumera todos los elementos en el directorio especificado, los ordena por LastWriteTime en orden descendente y selecciona el primer elemento, que es el archivo más nuevo.

La siguiente captura de pantalla muestra el resultado después de ejecutar el script de PowerShell anterior usando el código VS en mi computadora portátil.

Si está buscando el archivo más nuevo con una extensión específica, puede agregar un filtro como el siguiente ejemplo de secuencia de comandos.

Mostrará el último archivo de texto en el directorio usando PowerShell.

$directoryPath = "C:\MyFolder"
$fileExtension = "*.txt"
$newestFile = Get-ChildItem -Path $directoryPath -Filter $fileExtension | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest text file is: $($newestFile.FullName)"

Este script es similar al anterior pero incluye un parámetro -Filter para considerar solo archivos .txt.

Y si desea excluir directorios y considerar solo archivos. Puede modificar el cmdlet Get-ChildItem con el modificador -File:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

2. Uso de ForEach-Object para una clasificación personalizada

En PowerShell, también puede utilizar ForEach-Object para obtener el archivo más reciente de un directorio o carpeta.

He aquí un ejemplo:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath | ForEach-Object {
    $_ | Add-Member -MemberType NoteProperty -Name "SortProperty" -Value $_.LastWriteTime -PassThru
} | Sort-Object SortProperty -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

Este script agrega una propiedad personalizada a cada objeto de archivo y ordena según esa propiedad.

3. Usando Get-Item con Sort-Object

Este es el tercer enfoque y aquí puede usar el cmdlet Get-Item en combinación con Sort-Object para obtener el archivo más reciente en un directorio usando PowerShell.

$directoryPath = "C:\MyFolder\*"
$newestFile = Get-Item $directoryPath | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

Este enfoque es similar al uso de Get-ChildItem, pero Get-Item se usa para recuperar todos los elementos directamente.

Puede ver el resultado en la captura de pantalla a continuación; Ejecuté el script anterior.

Conclusión

En este tutorial de PowerShell, expliqué cómo obtener el archivo más nuevo en un directorio en PowerShell utilizando varios métodos como:

  1. Usando Get-ChildItem y Sort-Object
  2. Uso de ForEach-Object para una clasificación personalizada
  3. Usando Get-Item con Sort-Object

Artículos relacionados