Cambie el nombre de varios archivos como "Fecha / Hora modificada" usando cmd o Powershell

9

Tengo cientos de archivos JPG en una carpeta. Quiero cambiar el nombre de cada archivo para que el nombre del archivo se reemplace con "Fecha / Hora modificada" de ese archivo, es decir DD.MM.RRRR.HH.MM.jpg. Por ejemplo,

Before    After  

001.jpg   11.01.2011.16.58.jpg  
002.jpg   12.01.2011.09.32.jpg  
003.jpg   14.01.2011.12.41.jpg  
...       ...

Como los dos puntos (:) no se pueden usar en los nombres de archivo, los dos puntos entre HH y MM deben reemplazarse con un punto.

No quiero usar una herramienta de terceros. ¿Me puede proporcionar el código para lograr esto en Powershell o en la línea de comandos?

Mehper C. Palavuzlar
fuente

Respuestas:

15

Prueba esto en Powershell:

Get-ChildItem *.jpg | Rename-Item -newname {$_.LastWriteTime.toString("dd.MM.yyyy.HH.mm") + ".jpg"}
Siim K
fuente
0

Espero que no les importe mis comentarios aquí.

'Rename-Item' me dio este error: Rename-Item: No se puede crear un archivo cuando ese archivo ya existe.

Así que agregué la solución de Siim K de la siguiente manera y ejecuté esto dentro de 'Windows Powershell ISE':

Get-ChildItem * .jpg | ForEach-Object {$ NewName = $ .LastWriteTime.toString ("aaaa.MM.dd.HH.mm.ss.ss") + ($ script: i ++) + ".jpg" $ Destino = Join-Path -Path $ .Directory.FullName -ChildPath $ NewName Move-Item -Path $ _. FullName -Destination $ Destination -Force}

Encontré que el orden 'aaaa.MM.dd.mm.ss.ss' enumeraba mejor mis imágenes y reconocí que ninguno de mis recuentos de imágenes se redujo (purgó accidentalmente) también en la carpeta. Espero que esto sea útil para otros 'superusuarios' (principiantes o experimentados).

Tony Nilsson
fuente