通过重新排序/操作当前名称重命名Windows批处理文件

时间:2015-10-22 18:06:18

标签: windows batch-file

我在多个文件夹中有大量文件,文件名格式为:

FILE DESCRIPTION_MM DD YYYY_F_XXXXX.EXTENSION 

FILE DESCRIPTION是可变数量的字符。 XXXXX也是可变数量的字符。扩展名为pdfdocdocx。要使用的分隔符是_的第一个实例。示例:

Foo File_01 01 2016_F_Bar.pdf

我需要通过将Date重新排序到前面来重命名每个文件。它不是当前的格式,而是

MM DD YYYY_FILE DESCRIPTION_F_XXXXX.EXTENSION". 

因此,我需要删除DATE和_的第二个实例,并将其移动到文件名的前面。这相当于11个字符,包括_

扩展名需要保持不变。使用上面的例子:

01 01 2016_Foo File_01 01 2016_F_Bar.pdf 

另外,我只想重命名格式为" FILE DESCRIPTION_MM DD YYYY_F_XXXXX.EXTENSION"忽略所有其他情况,其中文件已使用前面的DATE格式化,以及没有DATE的情况。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试一些测试数据

@echo off

FOR /F "delims=" %%G IN ('dir /a-d /b /s *_*_*.pdf *_*_*.doc *_*_*.docx ^|findstr /R /C:".*_[0-9][0-9] [0-9][0-9] [0-9][0-9][0-9][0-9]_F_.*\."') DO (
    FOR /F "TOKENS=1,2* delims=_" %%H IN ("%%~nxG") DO rename "%%~G" "%%~I_%%~H_%%~J"
)