You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Windows批处理脚本:将文件名中ddmmyyyy日期转为yyyymmdd

Windows批处理实现文件名内ddmmyyyy日期转yyyymmdd格式批量重命名

需求说明

编写Windows批处理(.bat)文件,批量重命名文件夹内文件,将文件名中ddmmyyyy格式的日期戳转换为yyyymmdd格式。

示例原文件名

AccountStatement_10062023.pdf
AccountStatement_10072023.pdf
AccountStatement_10082023.pdf
AccountStatement_10092023.pdf
AccountStatement_10102023.pdf

期望重命名后文件名

AccountStatement_20230610.pdf
AccountStatement_20230710.pdf
AccountStatement_20230810.pdf
AccountStatement_20230910.pdf
AccountStatement_20231010.pdf

解决方案脚本

以下是符合需求的批处理脚本:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下所有文件,如需限定类型可改为 *.pdf 等通配符
for %%f in (*) do (
    set "filename=%%~nf"
    set "extension=%%~xf"
    
    :: 匹配文件名中"_后接8位数字"的格式(对应ddmmyyyy日期)
    echo !filename! | findstr /r "_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" >nul
    if not errorlevel 1 (
        :: 拆分文件名前缀和日期部分
        for /f "tokens=1,2 delims=_" %%a in ("!filename!") do (
            set "prefix=%%a"
            set "date_str=%%b"
            
            :: 提取dd、mm、yyyy各部分
            set "dd=!date_str:~0,2!"
            set "mm=!date_str:~2,2!"
            set "yyyy=!date_str:~4,4!"
            
            :: 组合为yyyymmdd格式的新日期
            set "new_date=!yyyy!!mm!!dd!"
            
            :: 生成新文件名并执行重命名
            set "new_filename=!prefix!_!new_date!!extension!"
            rename "%%f" "!new_filename!"
            echo 已完成重命名: %%f → !new_filename!
        )
    )
)

endlocal
pause

脚本关键说明

  1. 延迟变量扩展:setlocal enabledelayedexpansion确保循环内变量能实时更新,避免变量值不刷新的问题
  2. 格式匹配:findstr正则匹配确保只处理包含_+8位数字的目标文件,避免误操作
  3. 字符串截取:通过!date_str:~起始位置,长度!的语法,从8位日期串中拆分出日、月、年部分
  4. 灵活适配:若只需处理特定类型文件,可将for %%f in (*)改为for %%f in (*.pdf)等格式

注意事项

  • 测试阶段可将rename改为echo rename,先预览重命名结果再实际执行
  • 确保目标文件名格式统一,日期部分为下划线后紧跟8位ddmmyyyy格式数字
  • 脚本需放在目标文件所在目录运行,或修改遍历路径为指定文件夹

内容的提问来源于stack exchange,提问作者davehants

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:27:18