Rinomina più file come "Data / ora modificate" utilizzando cmd o Powershell


9

Ho centinaia di file JPG in una cartella. Voglio rinominare ogni file in modo che il nome del file venga sostituito con "Data / ora modificate" di quel file, vale a dire DD.MM.RRRR.HH.MM.jpg. Per esempio,

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  
...       ...

Poiché i due punti (:) non possono essere utilizzati nei nomi dei file, i due punti tra HH e MM devono essere sostituiti con un punto.

Non voglio usare uno strumento di terze parti. Potete fornirmi il codice per raggiungere questo obiettivo in Powershell o nella riga di comando?

Risposte:


15

Prova questo in Powershell:

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

0

Spero che non vi dispiaccia il mio feedback qui.

'Rename-Item' mi ha dato questo errore: Rename-Item: Impossibile creare un file quando quel file esiste già.

Quindi ho aggiunto la soluzione di Siim K come segue ed eseguito questo in 'Windows Powershell ISE':

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

Ho trovato l'ordine 'yyyy.MM.dd.mm.ss.ss' elencato meglio le mie immagini e ho riconosciuto che nessuno dei miei conteggi di immagini è stato ridotto (accidentalmente eliminato) all'interno della cartella. Spero che ciò sia utile per altri "superutenti" (principianti o esperti).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.