Windows 批处理脚本 5 种高级重命名模式:正则替换、日期前缀、序号填充

Windows 批处理脚本 5 种高级重命名模式:正则替换、日期前缀、序号填充
Windows 批处理脚本 5 种高级重命名模式正则替换、日期前缀、序号填充在文件管理工作中批量重命名是一项常见但繁琐的任务。对于需要处理成百上千个文件的开发者或运维人员来说手动操作不仅效率低下还容易出错。本文将介绍五种基于 Windows 批处理脚本的高级重命名技术帮助您实现自动化、精准化的文件管理。1. 正则表达式替换模式正则表达式是处理复杂文本模式的利器在批处理文件中同样可以发挥强大作用。以下脚本实现了基于正则的文件名替换echo off setlocal enabledelayedexpansion :: 设置替换规则旧模式→新模式 set patternIMG_\d{4} set replacementPhoto_2023 for /f delims %%f in (dir /b /a-d ^| findstr /r %pattern%) do ( set filename%%~nf set ext%%~xf set new_name!filename:%pattern%%replacement%! ren %%f !new_name!!ext! )提示此脚本会查找所有匹配IMG_数字格式的文件并将其替换为Photo_2023前缀。可根据实际需求修改pattern和replacement变量。关键参数说明参数说明示例值pattern需要匹配的正则模式IMG_\d{4}replacement替换后的文本Photo_2023/r启用正则匹配-2. 日期时间前缀模式为文件添加系统日期时间戳是归档管理的常见需求。以下脚本实现自动添加精确到秒的时间戳echo off setlocal enabledelayedexpansion for /f tokens1-6 delims/ %%a in (date /t) do ( set year%%c set month%%a set day%%b ) for /f tokens1-3 delims:. %%g in (time /t) do ( set hour%%g set minute%%h set second%%i ) set timestamp%year%%month%%day%_%hour%%minute%%second% for %%f in (*.*) do ( if not %%~xf.bat ( ren %%f %timestamp%_%%~nxf ) )该脚本会生成如20230615_143022_filename.txt格式的新文件名。通过修改时间格式字符串可以灵活调整时间戳的显示方式。3. 自动序号填充模式为文件添加整齐的序号是整理系列文件的理想方案。以下脚本实现三位数自动编号echo off setlocal enabledelayedexpansion set count1000 for /f delims %%f in (dir /b /a-d /on) do ( set /a count1 set serial!count:~1! ren %%f Document_!serial!%%~xf )编号效果对比原文件名新文件名data1.txtDocument_001.txtreport.pdfDocument_002.pdfimage.pngDocument_003.png注意!count:~1!表示从变量值的第二个字符开始截取实现去掉千位数的效果。4. 大小写转换模式统一文件名大小写格式可提升文件系统的整洁度。以下脚本提供三种转换方案echo off setlocal enabledelayedexpansion :: 选择转换模式1-全大写 2-全小写 3-首字母大写 set mode3 for %%f in (*.*) do ( set name%%~nf set ext%%~xf if !mode!1 ( set new!name!!ext! for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( set new!new:%%i%%i! } ) else if !mode!2 ( set new!name!!ext! for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do ( set new!new:%%i%%i! } ) else ( set first!name:~0,1! set rest!name:~1! for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( set first!first:%%i%%i! } set new!first!!rest!!ext! } ren %%f !new! )5. 关键信息提取模式从复杂文件名中提取特定部分有时非常必要。以下脚本演示如何提取文件名中的日期部分echo off setlocal enabledelayedexpansion for %%f in (*.*) do ( set name%%~nf set ext%%~xf :: 提取YYYY-MM-DD格式日期 for /f tokens1-3 delims- %%a in (!name!) do ( set year%%a set month%%b set day%%c ) if defined year ( set new_name!year!!month!!day!!ext! ren %%f !new_name! ) )实际项目中我曾用类似脚本处理数千个日志文件成功将如server_log_2023-06-15_error.txt的文件统一重命名为20230615.txt格式极大简化了后续分析工作。