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

批量脚本实现文件夹内早于当前日期的图片重命名需求

批量重命名早于当前日期的图片文件(Batch脚本解决方案)

我来帮你完善这个Batch脚本,实现对文件夹内所有早于当前日期的图片按指定格式重命名。先看完整的脚本,再一步步解释细节:

@echo off
setlocal enabledelayedexpansion

:: 设置摄像头映射:DRS01 -> Cam 1,可根据需要添加更多摄像头的对应关系
set "cam_map=DRS01:Cam 1;DRS02:Cam 2"

:: 获取当前日期并转换为YYYYMMDD标准格式(适配不同系统的日期显示差异)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "dt=%%a"
set "current_date=!dt:~0,8!"

:: 遍历所有符合原命名格式的图片文件(同时处理小写和大写扩展名)
for %%F in (DRS*_*_*_*.jpg DRS*_*_*_*.JPG) do (
    :: 拆分原文件名的核心部分:提取摄像头前缀和时间戳(下划线分隔)
    for /f "tokens=1,3 delims=_" %%i in ("%%~nF") do (
        set "cam_prefix=%%i"
        set "timestamp=%%j"
        :: 从时间戳中提取文件的日期部分(前8位)
        set "file_date=!timestamp:~0,8!"
        
        :: 判断文件日期是否早于当前日期
        if !file_date! lss !current_date! (
            :: 根据摄像头前缀匹配目标命名前缀
            set "target_prefix="
            for /f "tokens=1,2 delims=:;" %%x in ("!cam_map!") do (
                if "%%x" equ "!cam_prefix!" set "target_prefix=%%y"
            )
            :: 确认匹配到前缀后执行重命名
            if not "!target_prefix!"=="" (
                ren "%%F" "!target_prefix!_!timestamp!.jpg"
                echo 已完成重命名:"%%F" -> "!target_prefix!_!timestamp!.jpg"
            )
        )
    )
)

endlocal
pause

关键细节说明:

  • 摄像头前缀映射:通过cam_map变量可以灵活添加更多摄像头的对应规则,比如后续遇到DRS03只需改成DRS01:Cam 1;DRS02:Cam 2;DRS03:Cam 3即可,不用修改核心逻辑。
  • 日期兼容性处理:用wmic命令获取系统标准时间格式,避免了不同Windows系统日期显示格式(如MM/DD/YYYY或DD/MM/YYYY)的冲突,确保日期比较准确。
  • 高效文件名拆分:直接提取原文件名中第1段(摄像头标识)和第3段(时间戳),跳过中间无关的冗余字段,简化处理逻辑。
  • 安全校验:先通过字符串比较确认文件日期早于当前日期,再执行重命名;同时添加了映射前缀的校验,避免无意义的重命名操作。

使用小提示:

  • 第一次测试时可以把ren命令改成echo ren,先预览所有重命名操作,确认结果符合预期后再正式执行。
  • 如果需要支持更多图片格式(如.jpeg),只需在遍历文件的列表中添加DRS*_*_*_*.jpeg即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:29:17