Búsqueda de sitios web

¿Cómo cambiar el nombre de archivos con fecha en PowerShell?


Recientemente, recibí el requisito de cambiar el nombre de un archivo agregando la fecha actual en PowerShell. Probé diferentes métodos y en este tutorial de PowerShell te explicaré cómo cambiar el nombre de los archivos con fecha en PowerShell usando varios métodos.

Para cambiar el nombre de un archivo en PowerShell y agregar la fecha actual, puede utilizar el cmdlet Rename-Item en combinación con Get-Date. He aquí un ejemplo conciso:

Get-ChildItem "C:\MyFolder\file.txt" | Rename-Item -NewName {$_.BaseName + (Get-Date -Format "yyyyMMdd") + $_.Extension}

Este comando cambiará el nombre del archivo para incluir la fecha actual en el formato aaaaMMdd, por ejemplo, file20240214.txt para el 14 de febrero de 2024.

Método 1: uso del cmdlet Rename-Item

La forma más sencilla de cambiar el nombre de un archivo con la fecha actual en PowerShell es utilizar el cmdlet Rename-Item. Aquí hay un ejemplo básico:

Get-ChildItem "C:\MyFolder\file.txt" | Rename-Item -NewName {$_.BaseName + (Get-Date -Format "yyyyMMdd") + $_.Extension}

Este script cambiará el nombre de file.txt a file20240507.txt (suponiendo que la fecha de hoy sea el 7 de mayo de 2024). El cmdlet Get-Date -Format se utiliza para generar la cadena de fecha.

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 2: usar una función personalizada

También puede crear una función personalizada que se puede reutilizar para cambiar el nombre de cualquier archivo con la fecha actual en PowerShell.

Aquí está el guión completo.

function Rename-FileWithDate {
    param (
        [string]$Path,
        [string]$DateFormat = "yyyyMMdd"
    )
    Get-ChildItem $Path | Rename-Item -NewName {$_.BaseName + (Get-Date -Format $DateFormat) + $_.Extension}
}

# Usage
Rename-FileWithDate -Path "C:\MyFolder\file.txt"

Esta función le permite especificar la ruta del archivo y un formato de fecha opcional.

Método 3: agregar fecha y hora

A veces, es posible que desee incluir la hora y la fecha al cambiar el nombre de un archivo en PowerShell. A continuación se explica cómo puede modificar el script para agregar fecha y hora:

Get-ChildItem "C:\MyFolder\file.txt" | Rename-Item -NewName {$_.BaseName + (Get-Date -Format "yyyyMMdd-HHmmss") + $_.Extension}

Esto cambiará el nombre de su archivo a algo como file20070514-153045.txt, incluida la hora en formato de 24 horas.

Método 4: cambiar el nombre de varios archivos en un directorio

Si necesita cambiar el nombre de todos los archivos en un directorio, puede recorrer cada archivo usando el cmdlet de PowerShell Get-ChildItem y luego cambiarle el nombre. Aquí está el script completo de PowerShell.

Get-ChildItem "C:\MyFolder\*.txt" | ForEach-Object {
    $newName = $_.BaseName + (Get-Date -Format "yyyyMMdd") + $_.Extension
    Rename-Item $_.FullName -NewName $newName
}

Este script cambiará el nombre de cada archivo .txt en el directorio especificado, agregando la fecha actual a cada nombre de archivo.

Método 5: preservar la estructura del nombre del archivo original

Para mantener intacto el nombre del archivo original y simplemente agregar la fecha, puede ajustar el script de esta manera:

Get-ChildItem "C:\MyFolder\file.txt" | Rename-Item -NewName {$_ -replace $_.Name, ($_.BaseName + "_" + (Get-Date -Format "yyyyMMdd") + $_.Extension)}

En este ejemplo, el nombre del archivo file.txt se cambiaría a file_20240214.txt.

Cambiar nombre con expresiones regulares

Para escenarios de cambio de nombre más complejos, es posible que necesite utilizar expresiones regulares. Aquí hay un ejemplo que cambia el nombre de archivos con un patrón específico:

Get-ChildItem "C:\MyFolder\*.txt" | ForEach-Object {
    $newName = $_.Name -replace 'pattern', (Get-Date -Format "yyyyMMdd")
    Rename-Item $_.FullName -NewName $newName
}

Reemplace "patrón" con el patrón real que está intentando hacer coincidir en los nombres de los archivos.

Manejo de errores y excepciones

Al cambiar el nombre de los archivos, es posible que encuentre errores debido a permisos, bloqueos de archivos u otros problemas. Para manejar este tipo de escenarios, puede agregar manejo de errores a su script:

Get-ChildItem "C:\MyFolder\*.txt" | ForEach-Object {
    try {
        $newName = $_.BaseName + (Get-Date -Format "yyyyMMdd") + $_.Extension
        Rename-Item $_.FullName -NewName $newName -ErrorAction Stop
    } catch {
        Write-Error "Error renaming file $_.Name: $_"
    }
}

Este script se detendrá ante cualquier error y generará un mensaje para ayudarle a solucionar el problema.

Conclusión

En este tutorial de PowerShell, he explicado en detalle cómo cambiar el nombre de archivos con fecha en PowerShell usando varios métodos. La forma más sencilla de hacerlo es mediante el cmdlet Rename-Item de PowerShell.

Artículos relacionados