Búsqueda de sitios web

PowerShell agrega fecha al nombre de archivo [6 formas]


Si no desea cambiar el nombre del archivo y solo desea cambiar el formato de cadena, puede saltar directamente a la sección de ruta de unión.

Usando el cmdlet Rename-Item

Utilice el cmdlet -Rename-Item para agregar la fecha al archivo en PowerShell

Utilice el cmdlet -Rename-Item:

$Filename = "C:\Test1\File1.txt"
$newFilename = "C:\Test1\File1_$(Get-Date -Format yyyy-MM-dd).txt"
Rename-Item -Path $Filename -NewName $newFilename
Write-Host "New filename: $newFilename"

Producción :

New filename: C:\Test1\File1_2023-04-25.txt

El código anterior funciona de la siguiente manera:

  • Primero establece la variable $Filename en la ruta del archivo original que queremos cambiar de nombre, que es C:\Test1\File1.txt.
  • A continuación, creamos un nuevo nombre de archivo agregando la fecha actual en el formato aaaa-MM-dd al final del nombre del archivo. Usamos el comando Get-Date con el parámetro -Format para formatear la fecha como desee. El nuevo nombre de archivo resultante se almacena en la variable $newFilename.
  • Después de eso, el comando Rename-Item para cambiar el nombre del archivo original al nuevo nombre de archivo. El parámetro -Path se utiliza para determinar la ruta del archivo inicial, que se almacena en la variable $Filename, mientras que el parámetro -NewName se emplea para especificar el nuevo nombre de archivo, que se almacena en la variable $newFilename
  • Finalmente, el script modifica el nombre de C:\Test1\File1.txt a C:\Test1\File1_2023-04-19.txt, donde yyyy- MM-dd indica la fecha actual en el formato año-mes-día.

Usando la clase System.IO.Path con el cmdlet Move-Item

Para agregar una fecha al nombre del archivo, podemos usar varios métodos System.IO.Paths y el cmdlet Move-Item para cambiar el nombre del método.

  • Utilice GetDirectoryName() para obtener el nombre del directorio.
  • Utilice GetFileNameWithoutExtension() para obtener el nombre del archivo sin extensión.
  • Utilice GetExtension() para obtener la extensión del archivo.
  • Agregue la fecha actual al nombre del archivo y agregue la extensión al final.
  • Utilice el método combine() para combinar el directorio y el nombre del archivo.
  • Cmdlet Move-Item para cambiar el nombre del archivo.

Utilice -reemplace el operador:

[string]$filePath = "C:\Users\Arpit\Desktop\powershell\File1.txt";

[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName +"-"+[DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);

Move-Item -LiteralPath $filePath -Destination $newFilePath;

start-sleep -Seconds 30

Producción :

File3-20230624-132353

Usando el método [System.IO.Path]::ChangeExtension()

Utilice el método [System.IO.Path]::ChangeExtension() para agregar la fecha al archivo en PowerShell. Este método también es útil cuando desea cambiar la extensión del archivo.

Utilice el método ChangeExtension():

$filename = "C:\Test1\File1.txt"
$newExtension = [System.IO.Path]::ChangeExtension($filename, ".txt")
$newFilename = "{0}-{1}{2}" -f [System.IO.Path]::GetFileNameWithoutExtension($newExtension), (Get-Date -Format 'yyyy-MM-dd'), [System.IO.Path]::GetExtension($newExtension)
Rename-Item $filename $newFilename
Write-Host "New filename: $newFilename"

Producción :

New filename: File1-2023-04-25.txt

El código anterior funciona de la siguiente manera:

  • Toma la ruta del archivo de un archivo de texto y la asigna a la variable $filename.
  • Luego utiliza la clase .NET System.IO.Path para cambiar la extensión del archivo de $filename a .txt y asigna la nueva ruta a Variable $nuevaExtensión.
  • Además, utiliza la clase .NET System.IO.Path para extraer el nombre de archivo sin una extensión de $newExtension y lo almacena en $newFilename.
  • Luego agrega la fecha actual en el formato aaaa-MM-dd y la extensión del archivo a $newFilename usando el operador de formato de cadena -f.
  • Finalmente, muestra el resultado usando el cmdlet Write-Host agregando la fecha actual a su nombre de archivo y cambiando el nombre del archivo original con el nuevo nombre de archivo.

Usando el cmdlet Join-Path

Utilice el cmdlet Join-Path para agregar la fecha al archivo en PowerShell

Utilice el cmdlet Join-Path:

$filename = "File1"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = "$filename-$formatDate.txt"
$newPath = Join-Path -Path $path -ChildPath $newFilename
Write-Host "$newpath"

Producción :

C:\Test1\File1-2023-04-19.txt

El cmdlet Join-Path es una forma útil de combinar rutas y nombres de archivos en PowerShell. Por ejemplo, podemos usarlo para crear un nuevo nombre de archivo con la fecha adjunta. Por ejemplo, el código anterior funciona de la siguiente manera:

  • Establece el valor de la variable $filename en "File1".
  • Establece el valor de la variable $path en C:\Test1.
  • Obtiene la fecha y hora actuales mediante el cmdlet Get-Date y la almacena en la variable $date.
  • Formatee la fecha como una cadena en el formato yyyyMMdd usando el método ToString() y guárdela en la variable $formatDate.
  • Concatena las variables $filename y $formatDate con un separador de guiones y una extensión de archivo .txt y las almacena en la variable $newFilename .
  • Utiliza el cmdlet Join-Path para combinar las variables $path y $newFilename para formar una ruta de archivo completa y la almacena en la variable $nuevaRuta.
  • Finalmente, utiliza el cmdlet Write-Host para enviar el valor de $newPath a la consola con la fecha adjunta según el formato descrito.

Usando el operador de formato -f

Utilice el operador de formato -f para agregar fecha al archivo en PowerShell

Utilice el operador de formato -f:

$filename = "File1"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = "{0}_{1}.txt" -f $filename, $formatDate
Write-Host "$newFilename"

Producción :

File1_2023-04-19.txt

El código presentado anteriormente es similar al anterior, pero aprovecha el operador de formato -f para unir la fecha con el nombre de archivo.

Específicamente, la línea $newFilename="{0}_{1}.txt" -f $filename, $formattedDate genera una nueva cadena para el nombre del archivo empleando una cadena de formato que incluye marcadores de posición {0} y {1} para las variables $filename y $formattedDate, respectivamente.

El operador -f reemplaza los marcadores de posición con los valores correspondientes de las variables. Al final, el resultado muestra el nombre completo del archivo y la fecha actual representados en el formato aaaa-MM-dd, separados por un guión bajo y con una extensión .txt.

Usando el operador -replace

Utilice el operador -replace para agregar fecha al archivo en PowerShell

Utilice -reemplace el operador:

$filename = "File1.txt"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = $filename -replace "\.txt$", "-$formatDate.txt"
Write-Host "$newFilename"

Producción :

File1-2023-04-19.txt

Este código anterior es similar a los dos límites de código anteriores, pero utiliza el operador -replace para reemplazar la extensión del archivo .txt en $filename. con un separador de guiones y la fecha formateada en $formattedDate y almacena el nombre del archivo actualizado en la variable $newFilename.

Finalmente, el resultado final se muestra con la ruta completa del archivo con el nombre File1 y la fecha actual en el formato aaaa-MM-dd, separados por un guión bajo. y con una extensión de archivo .txt.

Teniendo en cuenta las soluciones anteriores, agregar una fecha a un nombre de archivo en PowerShell es una tarea común que se puede realizar utilizando el cmdlet rename-item, clase System.IO.Path con Move-Item cmdlet, Join-Path cmdlet, el operador de formato -f, el operador -replace, [System.IO.Path ]::ChangeExtension() método.

Se trata de que PowerShell agregue la fecha al nombre del archivo.

Artículos relacionados