繁体   English   中英

如何重命名 JPG 图像文件并在文件名中的日期/时间中插入破折号和点?

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

我有一些文件,例如:

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

他们需要重命名为:

  • 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

我尝试在 Windows 10 CMD 中使用重命名:

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

但我没有成功。

该图像文件重命名任务可以使用具有以下命令行的批处理文件来完成:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /F "delims=" %%I in ('dir ????????_??????-IMG_*.jpg /A-D /B 2^>nul') do set "FileName=%%I" & ren "!FileName!" "!FileName:~0,4!-!FileName:~4,2!-!FileName:~6,5!.!FileName:~11,2!.!FileName:~13!"
endlocal

可以直接在 Windows 命令提示符 window 中以当前目录为包含图像文件的目录执行以下命令行:

%ComSpec% /E:ON /V:ON /Q /S /C "for /F "delims=" %I in ('dir ????????_??????-IMG_*.jpg /A-D /B 2^>nul') do set "FileName=%I" & ren "!FileName!" "!FileName:~0,4!-!FileName:~4,2!-!FileName:~6,5!.!FileName:~11,2!.!FileName:~13!""

要了解使用的命令及其工作原理,请打开命令提示符window,在那里执行以下命令,并完整仔细地阅读每个命令显示的帮助页面。

  • cmd /?
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • ren /?
  • set /?
  • setlocal /?

阅读有关使用命令重定向运算符的 Microsoft 文档,了解2>nul的解释。 dir命令解释器在执行命令FOR之前处理此命令行时,重定向运算符>必须在FOR命令行上使用脱字符^进行转义,该命令使用在后台启动的单独命令进程使用%ComSpec% /c和附加的DIR命令行 arguments。

事实证明,使用 windows powershell 更容易:对于当前文件夹:

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

对于子文件夹的内容:

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

(-WhatIf 参数显示将要完成的操作。要真正执行它,请删除 -WhatIf 参数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM