windows 如何使用Win10 CMD重命名文件在第四和第六个字符后添加破折号

piv4azn7  于 2023-01-02  发布在  Windows
关注(0)|答案(2)|浏览(91)

我有一些文件,如:

  • 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

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

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

但我没有成功。

bgibtngc

bgibtngc1#

该图像文件重命名任务可以使用批处理文件通过以下命令行完成:

@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命令提示符窗口中直接执行,当前目录为包含图像文件的目录,命令行如下:

%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!""

要了解所使用的命令及其工作原理,请打开一个command prompt窗口,在其中执行以下命令,然后完整而仔细地阅读每个命令显示的帮助页面。

  • 第一个月
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • ren /?
  • set /?
  • setlocal /?

有关2>nul的说明,请阅读有关Using command redirection operators的Microsoft文档。在执行命令FOR之前,Windows命令解释程序处理FOR命令行时,必须使用插入符号^对重定向运算符>进行转义,以将其解释为文本字符其使用单独的命令进程执行嵌入的dir命令行,该单独的命令进程使用%ComSpec% /c和作为附加参数附加的DIR命令行在后台启动。

68bkxrlz

68bkxrlz2#

事实证明,使用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

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

相关问题