Renomeie vários arquivos como “Data / Hora Modificada” usando cmd ou Powershell

8

Eu tenho centenas de arquivos JPG em uma pasta. Desejo renomear cada arquivo para que o nome do arquivo seja substituído por "Data / hora modificada" desse arquivo, ou seja, DD.MM.RRRR.HH.MM.jpg . Por exemplo,

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 os dois pontos (:) não podem ser usados em nomes de arquivos, os dois pontos entre HH e MM devem ser substituídos por um período.

Eu não quero usar uma ferramenta de terceiros. Você pode me fornecer o código para conseguir isso em Powershell ou linha de comando?

    
por Mehper C. Palavuzlar 14.01.2011 / 13:45

2 respostas

12

Tente isso no Powershell:

Get-ChildItem *.jpg | Rename-Item -newname {$_.LastWriteTime.toString("dd.MM.yyyy.HH.mm") + ".jpg"}
    
por 14.01.2011 / 14:23
0

Espero que vocês não se importem com o meu feedback aqui.

'Renomear-Item' me deu este erro: Renomear-Item: Não é possível criar um arquivo quando esse arquivo já existir.

Então, adicionei a solução do Siim K da seguinte maneira e executei isso dentro do 'Windows Powershell ISE':

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

Eu achei a ordem 'yyyy.MM.dd.mm.ss.ss' listando minhas imagens melhor e reconheci que nenhuma das minhas imagens foi reduzida (acidentalmente removida) dentro da pasta  também. Espero que isso seja útil para outros 'superusuários' (iniciantes ou experientes).

    
por 16.06.2018 / 20:58