使用.bat批处理按4位数字顺序批量重命名tif文件问题求助
批处理tif文件批量重命名解决方案
你原有脚本的核心问题如下:
- 内层循环每次遍历所有tif文件读取前缀,属于冗余操作,而且如果目录下文件前缀不一致会取最后一个文件的前缀,不符合固定前缀的需求
- 没有先统一排序再重命名,容易出现重名覆盖、序号错乱的问题
- 前缀提取逻辑如果文件名规则有变化很容易失效
修正后可用脚本
@echo off setlocal enabledelayedexpansion :: 前缀配置二选一即可,推荐手动配置更稳定 :: 方式1:手动填写固定前缀 set "fixed_prefix=Open_university_MS221" :: 方式2:自动从第一个tif文件提取前缀,使用时注释上一行,取消注释下面3行即可 :: for /f "delims=" %%a in ('dir /b /od *.tif ^| findstr /i ".tif$"') do ( :: for /F "tokens=1-3 delims=_" %%g in ("%%~na") do set "fixed_prefix=%%g_%%h_%%i" & goto get_prefix_done :: ) :: :get_prefix_done set /a count=1 :: 按文件名升序遍历所有tif,避免重名冲突 for /f "delims=" %%f in ('dir /b /od *.tif ^| findstr /i ".tif$"') do ( :: 生成4位补零序号 set "seq=000!count!" set "seq=!seq:~-4!" :: 拼接新文件名 set "new_name=!fixed_prefix!_!seq!%%~xf" :: 执行重命名 rename "%%f" "!new_name!" set /a count+=1 ) echo 重命名操作完成 pause endlocal
使用注意事项
- 操作前建议先备份原目录文件,避免误操作导致数据丢失
- 如果需要按文件修改时间排序分配序号,把
dir /b /od中的/od改为/o-d即可 - 如果目录下已存在符合目标命名规则的文件,会导致重命名失败,提前清理冲突文件即可
内容的提问来源于stack exchange,提问作者Jeremy UK
相关产品推荐
相关产品推荐

