截取当前文件夹图片名称后11位作为新名称

以下是一个简单高效的 BAT 脚本,用于截取当前文件夹图片名称后11位作为新名称:

如果需要支持更多图片格式,可以在set "image_exts=..."这一行中添加对应的扩展名(用空格分隔)。

@echo off
setlocal enabledelayedexpansion

:: 配置参数
set "image_exts=jpg jpeg png gif bmp webp tif tiff ico"
set "keep=11"  :: 指定截取后11位

:: 标题信息
echo ==============================================
echo        强制截取图片名称后%keep%位作为新名称
echo ==============================================
echo 说明:无论原文件名长度,均截取最后%keep%位
echo ==============================================
echo.

:: 计数器初始化
set "total=0"
set "renamed=0"

:: 遍历处理图片文件
for %%e in (%image_exts%) do (
    if exist "*.%%e" (
        for %%f in (*.%%e) do (
            set /a total+=1
            set "old_name=%%f"
            
            :: 直接截取后6位(无需计算长度)
            set "new_name=!old_name:~-%keep%!"
            
            :: 仅处理需要重命名的文件
            if "!old_name!" neq "!new_name!" (
                :: 处理重名
                if exist "!new_name!" (
                    set "ext=%%~xf"
                    set "base=!new_name:%ext%=!"
                    set "num=1"
                    :duplicate_check
                    if exist "!base!_!num!!ext!" set /a num+=1 & goto duplicate_check
                    set "new_name=!base!_!num!!ext!"
                )
                
                :: 执行重命名
                ren "%%f" "!new_name!" && (
                    echo [!total!] 已重命名:!old_name! → !new_name!
                    set /a renamed+=1
                ) || (
                    echo [!total!] 重命名失败:!old_name!
                )
            ) else (
                echo [!total!] 无需修改:!old_name!
            )
        )
    )
)

:: 统计结果
echo.
echo ==============================================
echo 处理完成!
echo 总文件数:%total%
echo 成功重命名:%renamed%
echo ==============================================

pause
endlocal

image

posted @ 2025-07-22 16:01  ꧁༺星星的轨迹方程式༻꧂  阅读(7)  评论(0)    收藏  举报