Search code examples
windowscmdrenamecommand-prompt

How to rename JPG image files and insert dashes and dots in date/time in the file names?


I have some files such as:

  • 20220716_165615-IMG_1234.jpg
  • 20220717_102742-IMG_1235.jpg
  • 20220717_193212-IMG_1236.jpg

They need to be renamed to:

  • 2022-07-16_16.56.15-IMG_1234.jpg
  • 2022-07-17_10.27.42-IMG_1235.jpg
  • 2022-07-17_19.32.12-IMG_1236.jpg

I tried using a rename in Windows 10 CMD:

ren ????????_??????-*.* ????-??-??_??.??.??-*.*

But I was not successful.


Solution

  • Turns out it's easier with windows powershell: for the current folder:

    Get-Item .\*.* | Rename-Item -NewName {$_.BaseName.insert(15,'.') + $_.Extension} -WhatIf
    Get-Item .\*.* | Rename-Item -NewName {$_.BaseName.insert(13,'.') + $_.Extension} -WhatIf
    Get-Item .\*.* | Rename-Item -NewName {$_.BaseName.insert(6,'-') + $_.Extension} -WhatIf
    Get-Item .\*.* | Rename-Item -NewName {$_.BaseName.insert(4,'-') + $_.Extension} -WhatIf
    

    for the contents of the subfolders:

    Get-ChildItem -File -Recurse | Rename-Item -NewName {$_.BaseName.insert(11,'.') + $_.Extension} -WhatIf
    Get-ChildItem -File -Recurse | Rename-Item -NewName {$_.BaseName.insert(6,'-') + $_.Extension} -WhatIf
    Get-ChildItem -File -Recurse | Rename-Item -NewName {$_.BaseName.insert(4,'-') + $_.Extension} -WhatIf
    

    (the -WhatIf argument shows what's about to be done. To execute it for real, remove the -WhatIf argument)