如何在win 7中单个目录中的所有文件的单个特定架构之后批量重命名?

时间:2014-09-07 17:46:32

标签: batch-file windows-7 batch-rename

查找:

"文字(Y.m.d) - XXX - YYY - Name.ext"

替换:

"文字 - XXX - YYY - (d.m.Y) - Name.ext"

其中:

文本在所有文件中仅为大写和小写字母是静态的

XXX三个十进制整数,在所有文件中最多有两个前导零(例如,014)

YYY三个十进制整数,最多两个前导零在所有文件中不同

(dmY)和(Ymd)日期d =数字日(如果< 10则前导零)m =月份数(前导零< 10)Y =四位数年份(例如(07.12。 2014)(所有文件都不同,需要更改))

名称:文件的实际名称仅包含大写和小写字母和标点符号,并且可能& (例如HTML5和PHP)

2 个答案:

答案 0 :(得分:0)

包含代码

的批处理文件
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%F in ('dir "C:\Temp\* (????.??.??) - ??? - ??? - *.ext" /B') do (
   set "FileName=%%~nxF"
   set "Begin=!FileName:~0,5!"
   set "Year=!FileName:~6,4!"
   set "Month=!FileName:~11,2!"
   set "Day=!FileName:~14,2!"
   set "Middle=!FileName:~18,14!"
   set "End=!FileName:~32!"
   ren "%%~dpnxF" "!Begin!!Middle!(!Day!.!Month!.!Year!) - !End!"
)
endlocal

重命名名称为

的文件
Text (2014.09.07) - 014 - 205 - Name.ext
目录C:\Temp中的

Text - 014 - 205 - (07.09.2014) - Name.ext

打开命令提示符窗口并输入set /?以获取有关从此处使用的环境变量的字符串值中提取部件的语法的帮助。同时输入for /?dir /?以获取有关此批次代码中使用的其他2个命令的帮助。

顺便说一句:共享软件文件管理器Total Commander有一个名为多重命名工具的功能,可以在30秒内快速重命名文件而无需任何批处理编码技能,请参阅{{3} }和问题screenshot about multi-rename tool的教程

答案 1 :(得分:0)

这假定文本前缀不包含-()。请注意,TOKENS会跳过第3个标记()-之间的空格)。

@echo off
for /f "eol=: delims=" %%F in (
  'dir /b /a-d "* (??.??.??) - ??? - ??? - *"'
) do for /f "eol=: delims=()- tokens=1,2,4,5*" %%A in ("%%F") do (
  for /f "delims=. tokens=1-3" %%X in ("%%B") do (
    ren "%%F" "%%A-%%C-%%D (%%Z.%%Y.%%X) -%%E"
  )
)

可以通过添加FINDSTR

使代码忽略Text中包含问题字符的文件
@echo off
for /f "eol=: delims=" %%F in (
  'dir /b /a-d "* (??.??.??) - ??? - ??? - *"^|findstr /x "[^(-)]*(..\...\...) - ... - ... -.*"'
) do for /f "eol=: delims=()- tokens=1,2,4,5*" %%A in ("%%F") do (
  for /f "delims=. tokens=1-3" %%X in ("%%B") do (
    ren "%%F" "%%A-%%C-%%D (%%Z.%%Y.%%X) -%%E"
  )
)